我怎样才能 pg_dump 每个 table 在它自己的文件中,并保持一致?

How can I pg_dump each table in its own file, and stay consistent?

我有一个包含多个 table 的数据库,比方说 table_atable_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 都将转储到其自己的文件中。

  • 使用 directorycustom 格式的单个 pg_dump 为所有 table 获取一致的转储,然后创建单独的文件来自

    pg_restore -t table1 -f table1.sql all_tables.dmp
    

延伸阅读: