aik*_*mcr 5 database postgresql
这两个数据库具有相同的模式,但具有不同的数据.可能会有一些行重复,但是如果找到重复项,合并就会大量保释并且不进行更新就足够了,即重复应该手动解决.
部分问题是所讨论的数据库中存在许多外键约束.此外,可能存在一些引用外键的列,这些外键实际上没有外键约束.后者是由于插入时的性能问题.此外,我们需要能够在旧数据库中的ID和新数据库中的ID之间进行映射.
显然,我们可以编写一堆代码来处理这个问题,但我们正在寻找一个解决方案:
显然我们仍然在网上和Postgresql文档中搜索答案,但到目前为止我们发现的内容一直没有用.
更新:我明确遗漏的一件事是,"重复"是由架构中的唯一约束明确定义的.我们希望恢复一个数据库的内容,然后恢复一秒钟的内容.第二次恢复期间的错误应该被认为是第二次恢复的致命错误.然后应从第二个数据库中删除重复项并创建新的转储.我们希望ID重新编号,而不是其他唯一约束.BTW可能会在第二个数据库之后合并第三个甚至第四个数据库.
编写一堆脚本没有捷径\xe2\x80\xa6 这实际上无法自动化,因为管理冲突需要应用特定于您的数据的规则。
\n\n也就是说,你可以通过删除重复的代理键\xe2\x80\xa6 来减少冲突的可能性
\n\n假设您的两个数据库只有两个表:A (id pkey)和B (id pkey, a_id references A(id))。在第一个数据库中,找到max_a_id = max(A.id)并max_b_id = max(B.id)。
在第二个数据库中:
\n\na_id进行级联更新。id = id + max_a_id,B 也进行同样的操作。接下来,将此数据导入到第一个数据库中,并相应地更新序列。
\n\n如果 ID 最终大于 23 亿,您仍然需要警惕溢出,并且需要警惕两个数据库中可能存在的唯一键。但至少你不需要担心重复的 ID。
\n| 归档时间: |
|
| 查看次数: |
3044 次 |
| 最近记录: |