我正在尝试通过在空数据库上执行pg_dump创建的SQL来恢复PostgreSQL数据库。
我收到了这个错误:
ERROR: syntax error at or near "\"
LINE 5211: \.
第5210和5211行:
COPY auth_group (id, name) FROM stdin;
\.
在我的Linux服务器上运行正常,我使用此命令:
psql -U dbname< dumpfile.sql
但在Windows上,我不知道如何做同样的事情,所以我一直在尝试从pgAdminIII查询实用程序运行dumpfile的sql。
在Windows上从转储导入数据库的推荐方法是什么?或者:如何解决语法问题?
非常感谢任何帮助!
马丁
答案 0 :(得分:73)
psql上的-f filename
参数将在文件中读取,因此您不必将其输入.psql应该包含在Windows中的PostgreSQL的bin目录中。像这样:
psql -d dbname -U username -f dumpfile.sql
如果psql可执行文件不在路径中,则可能必须包含完整路径,并且可能将“.exe”添加到psql,因此它是“psql.exe”。
另外请确保您的版本号不会下降,我之前遇到过语法问题(例如,不要导出8.4数据库并尝试将其加载到8.1数据库中)。如果是这样,您可能必须手动编辑转储文件。
答案 1 :(得分:28)
尝试使用psql -d dbname -U user -f dumpfile.sql