在一个数据库中合并三个odoo(postgreSQL)数据库

时间:2018-10-02 14:33:48

标签: sql postgresql etl odoo

我有3个数据库,其中:

  • 相同的表
  • 相同架构
  • 不同数据

我想将3个数据库全部合并为一个数据库,并且我希望结果数据库能够被odoo识别。

我认为必须将每个数据库中每个表的数据复制到目标中,但是正如您所知,在存储数据时,odoo会对所有表使用自动增量主键,并且在复制这些表时我必须同步与那些表相关的外键的ID,因为我看到这也许是我将要面对的唯一问题。

所以我的要求是:在数据移到目标数据库后,我需要一个工具来自动同步外键。

(简要说明:向我建议完成工作的最短路径)。

1 个答案:

答案 0 :(得分:1)

您是否熟悉Odoo的外部ID(也称为xmlids)?它们是一种指针,存储在名为ir_model_data的表中。 xmlid是使用点作为分隔符将modulename字段连接起来的结果,它指向与model字段对应的表上的一条记录,该记录也id等于res_id字段的值。

因此,编写一个脚本,该脚本连接到3个数据库,并且一次在一个表上进行记录,查看它是否存在于其他两个数据库上,以巧妙的方式分配外部ID并将其传播给另一个具有相同记录的数据库。

然后使用Odoo的导出功能从两个数据库中导出表,并将它们加载到第三个数据库中。

请务必先备份数据库,并且永远不要在原始数据库上工作,而只能在副本上工作。

免责声明:根据数据库的复杂性,其中包含的数据以及用于识别其他数据库中是否存在记录的算法,这种方法可能有效,也可能无效。