我收到了一个.sql
文件,其中有两个数据库。以前,我只处理其中有一个数据库的.sql
个文件。我也不能要求以不同的文件发送数据库。
我以前使用此命令:
psql -d first_db < /Users/colibri/Desktop/first_db.sql
服务器上的数据库和本地数据库的名称不同。
请告诉我,现在如何从一个有多个文件的文件中还原特定数据库?
答案 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/'