运行查询时的语法错误:““ \”或附近的语法错误”

时间:2019-07-31 20:57:10

标签: postgresql

我已经生成了要用于还原数据库的postgres sql脚本。当我转到备份服务器尝试还原时,出现错误:““ \”处或附近的语法错误。

它被卡在以下字符“。”上

这些看起来像这样:

COPY admin.roles (role_id, role_name, is_role_auto) from stdin;
\.

这句话怎么了?我错过了配置吗?我在Windows上的PostgreSQL 11.4上。

2 个答案:

答案 0 :(得分:0)

很难完整了解备份和还原命令,但很难知道具体错误,但是如果有帮助,这是我要将表从生产环境复制到备份服务器时使用的样板:

$BIN/pg_dump -h production_server -p 5432 \
       --dbname=postgres \
       --superuser=postgres \
       --verbose \
       --format=c \
       --compress=9 \
       --table=admin.roles > backup.sql

$BIN/pg_restore \
      --host=backup_server \
      --port=5432 \
      --username=postgres \
      --dbname=postgres \
      --clean \
      --format=custom \
      backup.sql

format=c(或--format=custom)使内容完全不可读,但从正面来看,它还避免了使用定界符等引起的任何奇怪错误,并且还完美地复制了诸如数组之类的复杂数据结构和BLOB。

答案 1 :(得分:0)

您不能使用 pgAdmin 来恢复使用 pg_dump 进行的“普通格式”转储。它不理解 psql 及其数据交错的 COPY 语法。

您必须使用 psql 来恢复转储:

psql -h server -p 5432 -U user -d database -f dumpfile.sql