我已经生成了要用于还原数据库的postgres sql脚本。当我转到备份服务器尝试还原时,出现错误:““ \”处或附近的语法错误。
它被卡在以下字符“。”上
这些看起来像这样:
COPY admin.roles (role_id, role_name, is_role_auto) from stdin;
\.
这句话怎么了?我错过了配置吗?我在Windows上的PostgreSQL 11.4上。
答案 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