繁体   English   中英

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

[英]Syntax error when running Query: "syntax error at or near "\""

我已经生成了一个 PostgreSQL 脚本,我想用它来恢复数据库。 当我去我的备份服务器尝试恢复时,我收到错误: syntax error at or near "\"

它卡在以下字符\.

这些看起来像这样:

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

这个说法有什么问题? 有没有我错过的配置? 我在 Windows 上使用 PostgreSQL 11.4,使用pg_dump进行备份,然后使用 pgAdmin 恢复它。

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

您将不得不使用psql来恢复转储:

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

如果不完整查看备份和恢复命令,很难知道具体错误,但如果有帮助,这是我想将表从生产复制到备份服务器时使用的样板:

$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。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM