使用--exclude-table-data

时间:2017-11-06 18:37:42

标签: postgresql constraints pg-dump pg-restore

我目前正致力于以一种允许我们从该客户的基本结构创建新数据库的方式转储我们客户的一个数据库,但不会带来他们的私人数据。< / p>

到目前为止,我已pg_dump结合--exclude_tableexclude-table-data命令取得了成功,这使我只能提供有效需要的数据为了这个任务。

但是,有一些表混合了一些行,这些行引用了我留下的一些数据以及引用我必须带来的数据的其他行,这在恢复操作期间引起了一些问题。具体来说,当转储尝试对这些表上的某些列强制执行FOREIGN KEY约束时,它会失败,因为有些行的键在相应的外表上没有匹配的数据 - 因为我选择不带这个表&# 39; s数据!

我知道我可以在转储完成后登录数据库,删除任何引用不再存在的数据的行并自己创建约束,但我希望尽可能自动化该过程。有没有办法告诉pg_dumppg_restore(或任何其他程序)如果表A中有行,并且表B的数据从备份中排除?或者告诉Postgres我希望在导入表格数据之前让特定的外键处于活动状态?

作为参考,我在HREL 7服务器上使用PostgreSQL 9.2。

1 个答案:

答案 0 :(得分:0)

如果在还原数据库转储时禁用外键检查怎么办?之后,从引用表中删除孤独的行。

顺便说一句,我建议你修复数据库模式,这样就不会有错误的元组插入数据库。