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

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


当前回答

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

psql -d db_name -f dump.sql

其他回答

Postgresql12

从SQL文件: Pg_restore -d database < file.sql

自定义格式文件: pg_restore -Fc database < file.dump

我相信你想在psql中运行:

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

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

psql -d db_name -f dump.sql

确保要导入的数据库已经创建,然后可以导入转储

sudo -u postgres -i psql testdatabase < db-structure.sql

如果要覆盖整个数据库,请先删除数据库

# be sure you drop the right database !!!
#sudo -u postgres -i psql -c "drop database testdatabase;"

然后再用

sudo -u postgres -i psql -c "create database testdatabase;"
psql databasename < data_base_dump

这就是你要找的命令。

注意:必须在导入之前创建databasename。 请看PostgreSQL文档第23章。备份和恢复。