将sql dump导入到postgresql数据库中

我们正在交换主机,而旧的提供了我们网站的postgresql数据库的sql转储。 现在我试图在本地的wamp服务器上设置这个testing。

唯一的问题是,我不知道如何导入这个数据库的postgresql 9我已经成立。

我试过pgAdmin III,但我似乎无法find一个“导入”function。 所以我刚刚打开SQL编辑器,将转储的内容粘贴在那里并执行它,它创build表格,但是当他试图把数据放在里面的时候,我总是给我一些错误。

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 ... 

我也试过这个命令提示符,但我不能真正find我需要的命令。

如果我做

 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 

这是你正在寻找的命令。

注意:数据库名必须在导入之前创build。 看一下PostgreSQL文档第23章备份和恢复 。

这是你正在寻找的命令。

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

我相信你想在psql中运行:

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

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

 \i 'path/to/file.sql' 

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

这对我有用:

 sudo -u postgres psql db_name < 'file_path' 

只是为了方便,如果你的垃圾被压缩,你可以做类似的事情

gunzip -c filename.gz | psql dbname

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

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

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

你可以在pgadmin3中完成。 删除转储包含的模式。 然后右键单击数据库并select恢复。 然后,您可以浏览转储文件。

我用:

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

希望这会帮助别人。