我们正在切换主机,旧主机提供了我们站点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...
        ^

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


当前回答

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

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

其他回答

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

我有超过100MB的数据,因此我无法使用Pgadmin4恢复数据库。

我使用简单的postgres客户端,并写入下面的命令。

postgres@khan:/$ pg_restore -d database_name /home/khan/ downloads /dump.sql

它工作得很好,只花了几秒钟。你可以看到下面的链接以获取更多信息。 https://www.postgresql.org/docs/8.1/app-pgrestore.html

如果您正在使用扩展名为.dump的文件,请使用:

pg_restore -h hostname -d dbname -U username filename.dump

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

\i 'path/to/file.sql'

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

这是您正在寻找的命令。

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