我怎样才能 pg_dump 每个 table 在它自己的文件中,并保持一致?
How can I pg_dump each table in its own file, and stay consistent?
我有一个包含多个 table 的数据库,比方说 table_a
和 table_b
。
我想使用 pg_dump
备份我的基地,但是(出于各种原因)我希望每个 table 都有自己的转储文件。我可以做类似的事情:
$ pg_dump -t table_a -f export_a.sql
$ pg_dump -t table_b -f export_b.sql
但不能保证一致性:两个转储之间可能会发生修改,因此我的两个转储将代表数据库的不同状态,这是不一致的。
我的问题是:有什么方法可以确保这两个转储是一致的(比如,在同一个事务中等等),或者告诉 pg_dump
输出每个 table在它自己的文件中的单个转储?
我曾尝试使用 pg_dump -Fd -Z0
,但输出的 .dat
似乎不够可读,无法分隔每个 table 的信息。
没有直接的方法可以做到这一点。我有两个想法:
对所有 table 使用单一 directory
格式 pg_dump
(-F d
)。没错,将有一个包含所有 table 元数据的单个 toc.dat
,但每个 table 都将转储到其自己的文件中。
使用 directory
或 custom
格式的单个 pg_dump
为所有 table 获取一致的转储,然后创建单独的文件来自
pg_restore -t table1 -f table1.sql all_tables.dmp
延伸阅读:
我有一个包含多个 table 的数据库,比方说 table_a
和 table_b
。
我想使用 pg_dump
备份我的基地,但是(出于各种原因)我希望每个 table 都有自己的转储文件。我可以做类似的事情:
$ pg_dump -t table_a -f export_a.sql
$ pg_dump -t table_b -f export_b.sql
但不能保证一致性:两个转储之间可能会发生修改,因此我的两个转储将代表数据库的不同状态,这是不一致的。
我的问题是:有什么方法可以确保这两个转储是一致的(比如,在同一个事务中等等),或者告诉 pg_dump
输出每个 table在它自己的文件中的单个转储?
我曾尝试使用 pg_dump -Fd -Z0
,但输出的 .dat
似乎不够可读,无法分隔每个 table 的信息。
没有直接的方法可以做到这一点。我有两个想法:
对所有 table 使用单一
directory
格式pg_dump
(-F d
)。没错,将有一个包含所有 table 元数据的单个toc.dat
,但每个 table 都将转储到其自己的文件中。使用
directory
或custom
格式的单个pg_dump
为所有 table 获取一致的转储,然后创建单独的文件来自pg_restore -t table1 -f table1.sql all_tables.dmp