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



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

之前我使用了这个命令:

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

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

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

您有两个选择:

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

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

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

如果这是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/'

最新更新