使用跳过错误恢复大型PostgreSQL转储(gzipped - .sql.gz)(psql / pg_restore)

时间:2018-01-18 11:56:37

标签: postgresql psql restore dump

我正在尝试使用以下命令创建一个.sh脚本来恢复我的数据库(大约1.3Gb gzip)

dropdb dbname && createdb -O pguser dbname
gunzip < /path/to/backups/backupname.sql.gz | psql dbname

没关系,但是在某些时候我得到了下一个错误并且脚本进程停止了:

gzip: stdin: unexpected end of file
ERROR:  missing data for column "columnname"
CONTEXT:  COPY spots, line 533475: text_of_line

那么,有没有办法忽略这样的错误并跳过它来继续恢复?

1 个答案:

答案 0 :(得分:1)

尝试添加ON_ERROR_STOP=0

-bash-4.2$ psql -v ON_ERROR_STOP=0 <<EOF
> select now();
> error;
> select now();
> EOF
              now
-------------------------------
 2018-01-18 12:04:57.713847+00
(1 row)

ERROR:  syntax error at or near "error"
LINE 1: error;
        ^
              now
-------------------------------
 2018-01-18 12:04:57.714335+00
(1 row)
如果您使用非纯文本格式进行备份,请

或使用pg_restore