提问



我们正在切换主机,而旧的主机提供了我们站点的postgresql数据库的sql转储。
现在我试图在本地wamp服务器上设置它以测试它。


唯一的问题是我不知道如何在我设置的postgresql 9中导入这个数据库。


我尝试了pgAdmin III,但我似乎找不到导入功能。所以我只是打开了SQL编辑器并将转储的内容粘贴在那里并执行它,它创建了表但我在尝试时一直给我错误将数据放入其中。


ERROR:  syntax error at or near "t"
LINE 474: t 2011-05-24 16:45:01.768633 2011-05-24 16:45:01.768633 view...

The lines:
COPY tb_abilities (active, creation, modtime, id, lang, title, description) FROM stdin;
t   2011-05-24 16:45:01.768633  2011-05-24 16:45:01.768633  view    nl ...  


我也尝试过这个命令提示符,但我真的找不到我需要的命令。


如果我做


psql mydatabase < C:/database/db-backup.sql;


我收到了错误


ERROR:  syntax error at or near "psql"
LINE 1: psql mydatabase < C:/database/db-backu...
        ^


导入数据库的最佳方法是什么?

最佳参考


psql databasename < data_base_dump


那是你要找的命令。


注意:必须在导入之前创建databasename。
看一下PostgreSQL Docs第23章备份和恢复。[13]

其它参考1


这是您要查找的命令。


psql -h hostname -d databasename -U username -f file.sql

其它参考2


我相信你想在psql中运行:


\i C:/database/db-backup.sql

其它参考3


这对我有用:


sudo -u postgres psql db_name < 'file_path'

其它参考4


我不确定这是否适用于OP的情况,但我发现在交互式控制台中运行以下命令对我来说是最灵活的解决方案:


\i 'path/to/file.sql'


只需确保您已经连接到正确的数据库。此命令执行指定文件中的所有SQL命令。

其它参考5


工作得很好,在命令行中,所有参数都是必需的,-W代表密码


psql -h localhost -U user -W -d database_name -f path/to/file.sql

其它参考6


只是为了测试,如果您的转储被压缩,您可以做类似的事情


gunzip -c filename.gz | psql dbname


正如Jacob所说,PostgreSQL文档很好地描述了这一切。[14]

其它参考7


你可以在pgadmin3中完成。删除转储包含的架构。然后右键单击数据库并选择还原。然后,您可以浏览转储文件。

其它参考8


我用:


cat /home/path/to/dump/file | psql -h localhost -U <user_name> -d <db_name>


希望这会对某人有所帮助。

其它参考9


我注意到很多例子对于localhost来说过于复杂,在很多情况下只存在没有密码的postgres用户:


psql -d db_name -f dump.sql