我有一个包含数百个表的数据库,我需要做的是导出指定的表并将数据的插入语句插入一个sql文件。
我知道的唯一可以实现这一目标的语句是
pg_dump -D -a -t zones_seq interway > /tmp/zones_seq.sql
我应该为每个表运行此语句还是有一种方法可以运行类似的语句将所有选定的表导出到一个大sql big中。上面的pg_dump不会只导出表模式插入,我需要两个
任何帮助将不胜感激。
Answers:
直接来自手册:“可以通过编写多个-t开关来选择多个表”
因此,您需要列出所有表格
pg_dump --column-inserts -a -t zones_seq -t interway -t table_3 ... > /tmp/zones_seq.sql
请注意,如果您有多个具有相同前缀(或后缀)的表,则还可以使用通配符通过以下-t
参数选择它们:
“而且,根据psql的\ d命令使用的相同规则,将表参数解释为模式”
-D
选项似乎在PG 9.1及更高版本中已消失
如果那些特定的表与特定的正则表达式匹配,则可以在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>
^test.*
不是^test*
吗?
"test*"
:postgresql.org/docs/current/app-psql.html#APP-PSQL-PATTERNS