我收到了一个.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/'