postgresql 我如何才能pg_dump每个表在它自己的文件中,并保持一致性?

628mspwn  于 2022-11-04  发布在  PostgreSQL
关注(0)|答案(2)|浏览(139)

我有一个包含多个表的数据库,比如table_atable_b
我想使用pg_dump来备份我的数据库,但是(出于各种原因)我希望每个表都有自己的转储文件。

$ pg_dump -t table_a -f export_a.sql
$ pg_dump -t table_b -f export_b.sql

但一致性却无法保证:修改可能发生在两个转储之间,因此我的两个转储将表示数据库的不同状态,这是不一致的。
我的问题是:有没有办法确保这两个转储是一致的(比如,在同一个事务中),或者告诉pg_dump在它自己的文件中输出单个转储的每个表?
我尝试过使用pg_dump -Fd -Z0,但是输出的.dat似乎没有足够的可读性来分离每个表的信息。

ymdaylpp

ymdaylpp1#

没有直接的方法可以做到这一点。我有两个想法:

  • 对所有表使用单个directory``pg_dump-F d)。如果为真,则所有表元数据都将使用单个toc.dat,但每个表都将转储到自己的文件中。
  • 使用directorycustom的单个pg_dump来获取所有表的一致转储,然后使用
pg_restore -t table1 -f table1.sql all_tables.dmp
进一步阅读:
yvt65v4c

yvt65v4c2#

--verbose选项添加到pg_dump,并将**stdout和stderr都重定向到一个文件。
当表完成转储时,您将在输出中看到类似以下的内容:

pg_dump: finished item 7463 TABLE DATA mc_request

一点bashawk可以让您将9999.dat文件重命名为“表命名”文件。

相关问题