使用标识列在两个SQL数据库之间迁移数据
下面是一个场景。。。我有两个数据库(A和B),它们的模式相同,但记录不同。我想将使用标识列在两个SQL数据库之间迁移数据,sql,sql-server,Sql,Sql Server,下面是一个场景。。。我有两个数据库(A和B),它们的模式相同,但记录不同。我想将B的数据传输到DBA中相应的表中 假设两个数据库中都有名为Question和Answer的表。DBA在问题表中包含10条记录,在答案表中包含30条记录。两个表都有标识列Id,从1开始(&auto increment),并且Question和Answer之间有1对多的关系 在DBB中,我们在问题表中有5个条目,在答案中有20个条目 我的要求是将两个表的数据从源数据库B复制到目标数据库A,在数据传输过程中保持两个表之间的
B的
数据传输到DBA
中相应的表中
假设两个数据库中都有名为Question
和Answer
的表。DBA
在问题
表中包含10条记录,在答案
表中包含30条记录。两个表都有标识列Id
,从1开始(&auto increment),并且Question
和Answer
之间有1对多的关系
在DBB
中,我们在问题
表中有5个条目,在答案
中有20个条目
我的要求是将两个表的数据从源数据库B
复制到目标数据库A
,在数据传输过程中保持两个表之间的关系时,标识列中不存在任何冲突
任何解决方案或潜在的解决方法都将受到高度赞赏。我不会在这里编写SQL,但以下是我认为可以做到的。确保启用和禁用标识插入
A_maxidquestion
和A_maxidanswer
QuestionID+A_maxidquestion
。这将是您的新IDAnswerID+A_maxidanswer
和fk id作为QuestionID+A_maxidquestion
李>
注意-确保在插入值时,目标表未被任何其他进程用于插入值我不会在此处编写SQL,但我认为可以这样做。确保启用和禁用标识插入
A_maxidquestion
和A_maxidanswer
QuestionID+A_maxidquestion
。这将是您的新IDAnswerID+A_maxidanswer
和fk id作为QuestionID+A_maxidquestion
李>
注意-在插入值时,请确保目标表未被任何其他进程用于插入值。执行类似操作的最佳方法之一是使用OUTPUT子句。您可以插入新的父项并捕获新插入的标识值,您可以使用该标识值插入子项 如果还包括一个临时表,该临时表将保存原始标识值和新标识值,则可以根据需要进行设置
没有表的详细信息,这是我能做的最好的事情。解决类似问题的最佳方法之一是使用OUTPUT子句。您可以插入新的父项并捕获新插入的标识值,您可以使用该标识值插入子项 如果还包括一个临时表,该临时表将保存原始标识值和新标识值,则可以根据需要进行设置
没有表的详细信息,这是我能做的最好的事情。生成插入脚本并在所需的数据库中执行。您确实应该提供一些关于表的详细信息。是一个很好的开始。生成插入脚本并在所需的数据库中执行。您确实应该提供有关表的一些详细信息。这是一个很好的开始。这是相当脆弱的。如果在运行这些插入时系统中有其他人会发生什么情况?SeanLange-是的,这是可能的,但有人提到这是一个迁移,尽管我添加了注释。这非常脆弱。如果在运行这些插入时系统中有其他人会发生什么情况?SeanLange-是的,这是可能的,但有人提到这是一个迁移,尽管我已经添加了注释。