为特定表和条目创建数据库转储Postgres

时间:2011-09-09 09:47:53

标签: postgresql

我有一个包含数百个表的数据库,我需要做的是导出指定的表并将数据的语句插入到一个sql文件中。

我所知道的唯一声明就是

pg_dump -D -a -t zones_seq interway > /tmp/zones_seq.sql

我是否应该为每个表运行此语句,或者是否有办法运行类似的语句将所有选定的表导出为一个大的sql。上面的pg_dump不导出表模式只插入,我需要两个

任何帮助将不胜感激。

2 个答案:

答案 0 :(得分:120)

manual开始:“可以通过编写多个-t开关来选择多个表

所以你需要列出你的所有表格

pg_dump --column-inserts -a -t zones_seq -t interway -t table_3 ... > /tmp/zones_seq.sql  

请注意,如果您有多个具有相同前缀(或后缀)的表,您还可以使用通配符选择-t参数:

此外,表参数根据psql的\ d命令使用的相同规则解释为模式

答案 1 :(得分:16)

如果这些特定表与特定正则表达式匹配,则可以在pg_dump中使用-t选项中的正则表达式。

pg_dump -D -a -t zones_seq -t interway -t "<regex>" -f /tmp/zones_seq.sql <DBNAME>

例如,要转储以“test”开头的表,您可以使用

pg_dump -D -a -t zones_seq -t interway -t "^test*" -f /tmp/zones_seq.sql <DBNAME>