28

我正在尝试通过在空数据库上执行 pg_dump 创建的 SQL 来恢复 PostgreSQL 数据库。

我收到此错误:

ERROR:  syntax error at or near "\"
LINE 5211: \.

第 5210 和 5211 行内容如下:

COPY auth_group (id, name) FROM stdin;
\.

它在我的 Linux 服务器上运行良好,我使用以下命令:

psql -U 数据库名 < 转储文件.sql

但在 Windows 上,我不知道该怎么做,所以我一直在尝试从 pgAdminIII 查询实用程序运行转储文件的 sql。

从 Windows 上的转储中导入数据库的推荐方法是什么?或者:如何解决该语法问题?

任何帮助深表感谢!

马丁

4

2 回答 2

76

psql上的-f filename参数将读入文件,因此您不必通过管道将其输入。psql 应包含在 Windows 中 PostgreSQL 的 bin 目录中。像这样:

psql -d dbname -U username -f dumpfile.sql

如果 psql 可执行文件不在您的路径中,您可能必须包含它的完整路径,并且可能将“.exe”添加到 psql,因此它是“psql.exe”。

还要确保版本号没有下降,我之前遇到过语法问题(例如,不要导出 8.4 数据库并尝试将其加载到 8.1 数据库中)。如果是这样,您可能必须手动编辑转储文件。

于 2009-11-25T16:10:07.797 回答
29

尝试使用 psql -d dbname -U user -f dumpfile.sql

于 2009-11-25T16:12:02.413 回答