Den*_*oli 7 sql database merge
我们有三个按地区分开的数据库,一个在洛杉矶,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
Run Code Online (Sandbox Code Playgroud)
然后您可以合并这些并且没有重复的 PK。正如您已经说过的,这本质上只是生成新的 PK,但是以这种方式构建它可以让您轻松更新 FK(假设每个服务器上的数据都是隔离的)。祝你好运。