如何从其中有两个数据库的.sql文件还原一个数据库?

时间:2019-12-04 11:16:19

标签: postgresql psql

我收到了一个.sql文件,其中有两个数据库。以前,我只处理其中有一个数据库的.sql个文件。我也不能要求以不同的文件发送数据库。

我以前使用此命令:

psql -d first_db < /Users/colibri/Desktop/first_db.sql

服务器上的数据库和本地数据库的名称不同。

请告诉我,现在如何从一个有多个文件的文件中还原特定数据库?

2 个答案:

答案 0 :(得分:3)

您有两种选择:

  • 使用编辑器从SQL文件中删除除所需数据库以外的所有内容。

  • 还原整个文件,然后删除不需要的数据库。

该文件可能是使用pg_dumpall生成的。使用pg_dump转储单个数据库。

答案 1 :(得分:0)

如果这是pg_dumpall的输出,并且文件太大而无法使用vi之类的东西进行编辑,则可以使用流编辑器来隔离所需的内容。

perl -ne 'print if /^\\connect foobar/.../^\\connect/' < old.sql > new.sql

此捕获的最后一打行将被设置并创建要还原的下一个数据库,因此,如果您不希望这样做,则可能需要对此稍作修改以消除那些问题。尝试在重播时创建该数据库。您可以将结尾界标更改为如下所示,以便它更早结束,但是比'^ \ connect'界标更容易误判(数据本身包含魔术字符串)。

perl -ne 'print if /^\\connect foobar/.../^-- PostgreSQL database dump complete/'