我有一个包含多个表的数据库,比如table_a
和table_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
似乎没有足够的可读性来分离每个表的信息。
2条答案
按热度按时间ymdaylpp1#
没有直接的方法可以做到这一点。我有两个想法:
directory``pg_dump
(-F d
)。如果为真,则所有表元数据都将使用单个toc.dat
,但每个表都将转储到自己的文件中。directory
或custom
的单个pg_dump
来获取所有表的一致转储,然后使用进一步阅读:
yvt65v4c2#
将
--verbose
选项添加到pg_dump,并将**stdout和stderr都重定向到一个文件。当表完成转储时,您将在输出中看到类似以下的内容:
一点
bash
和awk
可以让您将9999.dat
文件重命名为“表命名”文件。