【发布时间】:2013-05-08 12:08:26
【问题描述】:
我正在尝试从 Postgres 9.1.1 恢复备份,该备份由以下人员创建:
pg_dump mydb > backup.sql
在 Postgres 9.1.9 上恢复
psql -d mydb -f backup.sql
我收到此错误:
psql:datasets.sql:278537: invalid command \.
psql:datasets.sql:278544: ERROR: syntax error at or near "1"
LINE 1: 1 4446 49 253.412262 239.618317 0 211.54303 100.482948 197.1...
\. 是COPY 命令的一部分,我猜它应该在 Postgres 9 版本之间兼容,或者不是?
COPY data_136 (id, in_1, in_2, in_3, in_4, out_1) FROM stdin;
1 5.0999999 3.5 1.39999998 0.200000003 Iris-setosa
2 4.9000001 3 1.39999998 0.200000003 Iris-setosa
--- few more line cutted
150 5.9000001 3 5.0999999 1.79999995 Iris-virginica
\.
【问题讨论】:
-
我想你的意思是
psql -d mydb -f backup.sql或psql -d mydb < backup.sql。-f更可取,因为它可以让 psql 给出正确的行号。 -
是的,当然。缺少
-f。 -
您可能需要显示带有
COPY的行(来自转储)、错误行之后的几行和错误行周围的几行。 -
发布的 COPY 数据看起来不错。可能有什么东西破坏了转储,比如将制表符转换为空格?
-
可能是行尾弄乱了?你有没有用 FTP 把它复制到某个地方,它是 ASCII 模式(为什么现代的 FTP 客户端甚至实现了这个功能,更不用说默认启用它了,让我不知道......)?
标签: postgresql postgresql-9.1 psql pg-dump