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

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

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

答案1

patch可能是你的朋友可以尝试创建一个新的转储,我们将其称为 current_dump 并diff针对 old_dump 进行操作,然后使用

   diff old_dump new_dump > patch.input
    (copy the new_dump) to another file at this point new.db.dump)
    patch new.db.dump patch.input

您可能必须在进行差异分析之前对转储文件进行排序,并且根据数据库的大小,这可能并不实用。

还要非常小心并根据备份执行此操作,直到您确定它是正确的。

否则,也许有 ETL 类型的工具可以做到这一点。

答案2

不知道您正在使用哪种转储(普通、tar 还是自定义)...

如果您有可用的 dblink,那么您可以恢复到不同的数据库并将数据拉到生产箱。

一个更复杂的解决方案可能是

  1. 将转储还原到另一个数据库,
  2. 更改架构/表名称,使其不与生产数据库中的任何内容冲突,
  3. 转储重命名的表并使用该转储将重命名的表放入生产数据库。
  4. 完成所有操作后,您就可以使用纯 SQL 来查找/插入丢失的数据。

相关内容