从表中复制数据并进行更新

时间:2012-03-19 16:22:00

标签: c# .net sql-server

我在SourceDB(SQL Server DB)中有一个表tblSource,在TargetDB(SQL Server DB)中有一个tblTarget。来自tblSource的数据必须移动到tblTarget。 tblSource具有位字段以指示将哪些数据移动到tblTarget,因此当将行复制到tbltarget时,必须设置此标志。我需要在C#中完成它,仍然欢迎在T-SQL中提出建议。我的问题是什么都是可能的解决方案,哪种方法最好?

4 个答案:

答案 0 :(得分:1)

如果在SQL Server 2008中,合并将适用于您。 OUTPUT适用于SQL Server 2005 +。

您需要更新记录以将位标志和OUTPUT INSERTED。*设置到目标表中。

只有在计划将所选记录插入目标表时,才可以考虑输出所选记录。

这在性能方面很好,因为这种技术只需要SQL Server遍历记录一次。

检查这些链接是否使用了OUTPUT。

http://msdn.microsoft.com/en-us/library/ms177564.aspx&& http://blog.sqlauthority.com/2007/10/01/sql-server-2005-output-clause-example-and-explanation-with-insert-update-delete/

答案 1 :(得分:0)

您可以使用TSQL MERGE语句,这样就不需要在每一行上保留一个标记。

如果需要,可以从C#执行,或者将其包装在存储过程中。如果它们位于不同的服务器实例中,则可以创建链接服务器。

答案 2 :(得分:0)

我会使用SQLBulkCopy类。我过去曾经用它,并且好运。它非常快速且易于使用。该链接上有大量示例代码可帮助您入门。

答案 3 :(得分:0)

有没有理由说明简单的INSERT不是一个选项?

INSERT INTO tblTarget (destcol1, destcol2) 
SELECT (sourcecol1, sourcecol2) FROM tblSource