基于数据表的高效批量SQL数据库表更新

时间:2012-12-07 01:37:07

标签: c# sql-server performance datatable sql-server-2012

我有超过100万行我检查更改然后更新。 我完成了遍历每条记录的程序,然后更新了数据库。但是这个操作需要几个小时来完成多线程。我已经优化了查询,插入和检查以最小化数据库负载。我取得了更好的成绩,但速度很慢。

有没有办法在内存中维护具有正确记录的DataTable,然后在一次更新中将整个数据结构作为“虚拟表”上传到SQL Server,让SQL服务器处理更新?

我在过去看过类似的东西,它是通过Posrgre服务器上的函数完成的(不涉及C#)。我需要我的程序在几分钟内完成,而不是几个小时。

2 个答案:

答案 0 :(得分:2)

你看过SqlBulkCopy类吗?

System.Data.SqlClient.SqlBulkCopy 

http://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqlbulkcopy.aspx

答案 1 :(得分:2)

使用批量复制将新数据插入临时表或使用表值参数(TVP),然后使用SQL MERGE命令更新现有表中的行。