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

sql-server – 如何在SQL Server中合并两个数据库?

发布时间:2021-03-15 11:47:43 所属栏目:MsSql教程 来源:网络整理
导读:两个数据库都具有相同的模式,但在某些表中它们可能会遇到与主键的冲突.所以我希望他们只是忽略重复的行,并继续进一步合并. 解决方法 首先,密钥冲突表明您当前使用的任何流程都很差. 要正确合并使用自动生成(non_GUID)键的两个数据库,您需要执行几个步骤.首

两个数据库都具有相同的模式,但在某些表中它们可能会遇到与主键的冲突.所以我希望他们只是忽略重复的行,并继续进一步合并.

解决方法

首先,密钥冲突表明您当前使用的任何流程都很差.

要正确合并使用自动生成(non_GUID)键的两个数据库,您需要执行几个步骤.首先将新的自动生成的密钥添加到父表,然后从两个表中导入所有数据,将旧的文件重命名为ID_old,并将新文件重命名为旧的ID名称.此时,您可以移动子表.您需要通过连接到父表并将新的id字段作为外键的值而不是现有表中的值来复制到子表.您需要为每个外键表重复此过程,如果该表也是父表,则需要在复制任何数据之前将conversionid字段添加到表中,以便您可以在链中一直工作.要做到这一点,需要掌握大量关于数据库结构和大量规划的知识.如果没有两个源数据库的良好备份,请不要考虑这样做.当两个数据库都处于单用户模式时,最好能够进行此过程.

如果您使用自然键并具有重复项,则会遇到很大的问题.所有重复的密钥记录都应首先移动到一个单独的表中,并确定应该制作哪个更正确的数据.在某些情况下,您会发现自然键实际上并不是唯一的(它们很少就是我几乎不使用它们的原因)并且合并的数据库需要使用某种类型的自动生成的键.这将涉及代码更改以及数据库更改,因此它是最后的选择.

您经常使用自然键找到的是每个数据的数据不同但是simliar(地址中的St. vice Street)在这种情况下标记插入的记录之一,然后在两个步骤中插入时,首先记录没有重复项,然后重复项表中标记为插入的记录.请记住,您必须检查所有外键表中的所有记录,以确定要保留哪些记录以及哪些记录不保留.抛弃任何重复项是一个坏主意,你会丢失数据,可能是关键数据(如客户的订单).这是一个漫长而乏味的过程,需要具有数据专业知识的人才能做出决定.作为程序员,您应该为他们提供一个重复数据删除工具,让他们检查每组重复项的所有数据,并选择要保留的内容和删除的内容,然后标记每个重复项,它将运行一个过程来插入记录.记住你的设计,对于真正的重复,会有一些子表(如订单)需要发送到数据库的记录选择作为输入的记录(订单是一个例子),对于其他表你会想要选择哪个是正确的(例如地址).因此,您可以看到这是一个复杂的过程,需要彻底了解数据库.

如果您有很多重复项,他们可能会清理并添加数据数月,因此工具非常重要.这样做的人很可能是系统用户,而不是数据库专家或程序员,因为他们是唯一真正可以判断保留哪条记录的人.可能你需要在任何情况下做一些类似的事情,因为即使你有一个自动生成的密钥,也可能有重复的记录.它们更难找到.

没有简单的方法来合并两个数据库(即使使用GUIDS,您也会遇到自然键中重复的问题).

(编辑:常州站长网)

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

    热点阅读