如何合并两个数据库副本(postgresql)

时间:2012-05-02 10:15:34

标签: postgresql rails-postgresql

我有两个版本的同一个数据库。一个是当前的,另一个是从备份中恢复的。现在我需要合并它们基本上将数据从备份移动到当前数据库中,保留不同表之间的关系。

是否有任何工具可以帮助您实现这一目标?

1 个答案:

答案 0 :(得分:2)

Rubyrep有一个同步feature可以做你想做的事。

Rubyrep是一个基于触发器的postgresql和mysql异步复制系统。但其中一个功能是“同步”命令,它会扫描表中的差异并尝试将它们合并在一起。通常你首先使用同步,然后使用复制来保持两个数据库同步,但没有理由你不能单独使用“sync”命令。

我相信它使用主键来比较数据,因此根据您的架构,它可能适用于您,也可能不适合您。您可能希望先备份数据。

我认为它将使用相同的主键合并记录。你可以告诉它哪一方获胜。但是如果你有两个不应该合并的主键的记录,我认为你会遇到麻烦。

但是,如果你帮助它,它可能会起作用。你可以告诉它,例如“username”是主键而不是“id”。如果数据不重叠,请提前手动调整序列主键。