【问题标题】:merge three odoo (postgreSQL) databases in one database将三个odoo(postgreSQL)数据库合并到一个数据库中
【发布时间】:2018-10-02 14:33:47
【问题描述】:

我有 3 个数据库:

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

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

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

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

(简短:向我建议完成这项工作的最短路径)。

【问题讨论】:

  • 使用一些 ETL 库/软件。这个问题非常广泛。投票结束。
  • @TheImpaler 为什么选择 ETL?我有 3 个属性完全相同的数据库,我想要一个繁重的解决方案,只是小的 sql 查询或 postgreSQL 扩展或 odoo 模块。

标签: sql postgresql etl odoo


【解决方案1】:

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

所以,编写一个脚本,连接到 3 个数据库,同时一个表获取一条记录,查看它是否存在于其他两个数据库中,以巧妙的方式分配一个外部 id 并将其传播给另一个具有相同记录的数据库。

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

请务必先备份您的数据库,切勿在原始数据库上工作,而是在副本上工作。

免责声明:此方法可能有效,也可能无效,具体取决于您的数据库的复杂性、其中包含的数据以及您确定记录是否存在于其他数据库中的算法。

【讨论】:

    猜你喜欢
    • 2012-09-09
    • 2013-12-08
    • 1970-01-01
    • 1970-01-01
    • 2014-06-12
    • 1970-01-01
    • 2018-06-23
    • 2016-07-28
    • 1970-01-01
    相关资源
    最近更新 更多