我在两个 postgresql 数据库中有数据需要合并为 1。为了清楚起见,两个数据库中都有某个日期需要合并的“好”数据。这不仅仅是将数据从一个附加到另一个。换句话说,假设表 foo 有一个序列号字段。两个数据库都有一个 ID=5555 的 foo 并且两个值都是有效的(但不同)。因此,目标数据库的 foo 保持 5555,新记录应该添加一个新 ID 为 nextval(foo_id_seq)。
所以,这是一个大麻烦。
我的想法是在目标数据库中创建一个 tmp 模式并从源数据库复制所需的数据。然后我需要基本上“更新”数据。新记录插入新想法(并更新外键),并且两个数据库中存在的记录得到更新。
我不相信有一个工具可以帮助我解决这个问题。
我的问题。
如何最好地处理生成新 ID?我知道我可以通过选择来做到这一点,而只需省略 id 列,但这需要大量输入并且会很慢。我的想法是为这些表创建一个临时触发器,该触发器将覆盖执行插入时提供的 id。
最后注释:
- 两个数据库都处于脱机状态。而我是唯一能接触到他们的人。
- 两个数据库具有完全相同的架构
- 目标数据库是 9.2