如何从一个包含两个数据库的.sql 文件中恢复一个数据库?
How to restore one database from a .sql file in which there are two databases?
我收到了一个 .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/'
我收到了一个 .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/'