将Postgresql转储与生产数据库合并

时间:2010-09-01 17:46:35

标签: postgresql

我有一个丢失了一些记录的postgresql数据库。我想从几天前获取数据库的pg_dump SQL转储,并将其与当前的生产数据库合并。许多记录将是重复的,因此它可以跳过重复。这样做的最佳方式是什么?

2 个答案:

答案 0 :(得分:1)

我会在另一个数据库中恢复转储。然后,对于我怀疑丢失数据的表,我会将其与其他数据库中恢复的表进行比较。如果您不知道哪个表丢失了数据,则必须在数据库的每个表上对此比较进行编程。

请记住you can't perform sql queries using multiple databases

您可以重命名要检查的表,并将其转储/还原到包含丢失数据的表的数据库中。然后,您可以像这样执行一个SQL查询:

select * from foo where var1 not in (select var1 from foo_restored);

答案 1 :(得分:0)

您可以尝试RULES。看看http://www.pointwriter.com/blog/index.php?/archives/6-REPLACE-in-PostgreSQL.html

调整此示例:

CREATE RULE "insert_ignore" AS
    ON INSERT TO "your_table"
    WHERE
      EXISTS(SELECT 1 FROM your_table WHERE key=NEW.key [...])
    DO INSTEAD
      NOTHING;

这是未经测试的,所以请在安全的环境中尝试。

相关问题