这是场景...我有两个数据库(A和B),它们的架构相同,但记录不同。我想将B's
数据传输到数据库A
中的相应表中。
假设我们在两个数据库中都有名为Question
和Answer
的表。数据库A
在Question
表中包含10条记录,在Answer
表中包含30条记录。这两个表的标识列Id
都以1(&自动递增)开头,并且Question
和Answer
之间存在1对多的关系。
在数据库B
中,我们在Question
表中有5个条目,在Answer
中有20个条目。
我的要求是将两个表的数据从源DB B
复制到目标DB A
,而在标识列中没有任何冲突,同时在数据传输期间保持两个表之间的关系。
任何解决方案或潜在的解决方法都将受到高度赞赏。
答案 0 :(得分:1)
在这里我不会写SQL,但是我认为可以做到。确保使用“身份插入”打开和关闭。
A_maxidquestion
和A_maxidanswer
。QuestionID+A_maxidquestion
。这将是您的新ID。AnswerID+A_maxidanswer
和fk id添加为QuestionID+A_maxidquestion
。 注意-确保在插入过程中,其他任何过程都不使用Destination表来插入值
答案 1 :(得分:0)
类似这样的最佳方法之一是使用OUTPUT子句。 https://docs.microsoft.com/en-us/sql/t-sql/queries/output-clause-transact-sql?view=sql-server-2017您可以插入新的父代并捕获新插入的标识值,以用于插入子代。
如果您还包括一个临时表,可以保存原始标识值和新标识值,则可以进行此设置。
我没有最好的表格详细信息。