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

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

不知道你正在使用什么types的转储(普通,焦油或自定义)…

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

更复杂的解决scheme可能是

  1. 将转储恢复到不同的数据库,
  2. 将模式/表名更改为不与生产数据库中的任何内容冲突,
  3. 转储重命名的表并使用该转储将重命名的表导入生产数据库。
  4. 毕竟,你可以使用普通的SQL查找/插入缺less的数据。

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

  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 

在执行diff之前,您可能必须对转储文件进行sorting,具体取决于数据库的大小,这可能并不实际。

也要非常小心,并在备份之前进行备份,直到您确定其正确。

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