加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

sql – 合并数据库如何处理重复的PK

发布时间:2020-12-12 07:03:57 所属栏目:MsSql教程 来源:网络整理
导读:我们有三个按地区分开的数据库,一个在洛杉矶,SF和纽约.所有数据库共享相同的模式,但包含特定于其区域的数据.我们希望将这些数据库合并为一个并对其进行镜像.我们需要保留每个区域的数据,但是将它们合并到一个db中.这给我们带来了很多问题,例如我们肯定会有重
我们有三个按地区分开的数据库,一个在洛杉矶,SF和纽约.所有数据库共享相同的模式,但包含特定于其区域的数据.我们希望将这些数据库合并为一个并对其进行镜像.我们需要保留每个区域的数据,但是将它们合并到一个db中.这给我们带来了很多问题,例如我们肯定会有重复的主键,外键可能会无效.

我希望找到一个有过这样一个任务经验的人,他可以提供一些关于我们如何完成合并的技巧,策略和经验.

例如,一个想法是创建复合键,然后更改我们的代码和sprocs以通过复合键(region / original pk)查找数据.但这要求我们改变所有代码和sprocs.

另一个想法是只导入数据并让它生成新的PK,然后更新所有对新PK的FK引用.这样我们可能不必更改任何代码.

欢迎任何经验!

解决方法

我没有这方面的第一手经验,但在我看来,你应该能够独特地映射PK – >每个服务器的新PK.例如,生成新的PK,使得来自LA服务器的数据具有PK%3 == 2,SF具有PK%3 == 1,并且NY具有PK%3 == 0.并且因为,无论如何我理解您的问题,每个服务器只将FK关系存储到自己的数据中,您可以以相同的方式更新FK.
NewLA = OldLA*3-1
NewSF = OldLA*3-2
NewNY = OldLA*3

然后,您可以合并这些并且没有重复的PK.正如您已经说过的,这基本上只是生成新的PK,但是以这种方式构造它可以让您轻松更新您的FK(假设,正如我所做的那样,每个服务器上的数据都是隔离的).祝好运.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读