我目前正致力于以一种允许我们从该客户的基本结构创建新数据库的方式转储我们客户的一个数据库,但不携带他们的私人数据。
到目前为止,我已经成功地pg_dump
结合了--exclude_table
andexclude-table-data
命令,这使我能够只带来执行此任务所需的数据。
但是,有一些表将引用我留下的一些数据的行与引用我必须带来的数据的其他行混合在一起,这导致我在还原操作期间出现了一些问题。具体来说,当转储尝试FOREIGN KEY
对这些表上的某些列实施约束时,它会失败,因为有些行的键在相应的外部表上没有匹配的数据——因为我选择不带这个表的数据!
我知道我可以在转储完成后登录数据库,删除任何引用不再存在的数据的行并自己创建约束,但我想尽可能地自动化这个过程。如果表 B 的数据从备份中排除,是否有办法告诉pg_dump
或(或任何其他程序)不从表 A 中获取行?pg_restore
或者告诉 Postgres 在导入表的数据之前我想让那个特定的外键处于活动状态?
作为参考,我在 HREL 7 服务器上使用 PostgreSQL 9.2。