我正在尝试使用以下命令创建一个.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
那么,有没有办法忽略这样的错误并跳过它来继续恢复?
答案 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