是否可以合并两个 Postgres 数据库

Is it possible to merge two Postgres databases

我们有一个基于 SQLite 的简单应用程序的两个副本。该应用程序有 10 个表,表之间有各种关系。我们想将这些数据库合并到一个具有相同模式的 Postgres 数据库中。我们可以使用 Talend 来促进这一点,但问题是会有重复的键(因为两个源数据库都是独立的)。有没有系统的方法可以使用原始键加上加载第一个数据库产生的偏移量将数据插入 Postgres?

步骤 1. 恢复第一个数据库。

第2步.通过添加选项on update cascade更改所有表的外键。

例如,如果列 table_b.a_id 引用列 table_a.id

alter table table_b 
    drop constraint table_b_a_id_fkey,
    add constraint table_b_a_id_fkey 
        foreign key (a_id) references table_a(id)
        on update cascade;

第 3 步。通过添加所需的偏移量来更新表的主键,例如:

update table_a
set id = 10000+ id;

步骤 4. 恢复第二个数据库。

如果您可以使用数据库架构编辑脚本(或使用您自己的脚本手动进行传输),您可以合并步骤 1 和 2 并在恢复前编辑脚本(添加选项 on update cascade 用于表声明中的外键)。