如何使用pg_dump或psql从*.sql文件中恢复PostgreSQL表?

27

我需要在控制台工具中恢复一个占用 250MB 的大表格(table)到 PostgreSQL 数据库中。我该如何使用 ps_dump 或 psql 来完成这个任务?


您可以在 psql shell 中使用 \h 获取所有命令的帮助。 - Kungi
4个回答

51

只需使用 psql 连接到数据库,然后运行\i /path/to/filename.sql


这个命令在使用psql时有效,例如:psql -d newdb -f db.sql而没有任何作用。有人知道为什么吗?顺便说一下,非常感谢。 - eXPRESS
这会还原整个数据库而不是单个表。 - volume one

24
psql --username yourusername --dbname yourdatabasename -f yourfile.sql

此处所述,根据配置,可能会要求输入密码。

如果这是一个新安装的数据库引擎,还没有您的数据库,请使用postgres作为数据库名称,并尝试省略用户名部分(新安装通常应授予当前安装用户完全访问权限)。

如果仍然无法登录,请编辑pg_hba.conf文件(无论它在您的安装中位于何处),将localhost暂时设置为受信任。然后您可以将postgres指定为用户名和数据库名称。

完成后请不要忘记恢复pg_hba.conf更改。


16
psql dbname < /path/to/dump.sql

您甚至可以根据需要实时修改转储内容:
sed 's/OWNER TO olduser/OWNER TO newuser/g' <  /path/to/dump.sql | psql dbname

这非常有用。我需要一个可以从脚本中执行的东西。谢谢! - bad_keypoints

2
psql -U postgres -d doctor_dev < /home/ravi/mydevelopment

1
这不是一个答案。这段代码只是将未知的SQL语句从文件发送到PostgreSQL数据库。 - Eric Leschinski

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接