将DataTable引入SQL Server的最快方法是什么?

时间:2010-06-11 15:19:38

标签: c# .net sql-server database bulkinsert

我在内存中有一个DataTable,我需要直接转储到SQL Server临时表中。

插入数据后,我将其转换一点,然后将这些记录的子集插入永久表中。

此操作最耗时的部分是将数据导入临时表。

现在,我必须使用临时表,因为这个应用程序的多个副本一次运行,我需要一层隔离,直到实际插入到永久表中。

从C#DataTable批量插入SQL临时表的最快方法是什么?

我不能使用任何第三方工具,因为我正在转换内存中的数据。

我目前的方法是创建一个参数化的SqlCommand:

INSERT INTO #table (col1, col2, ... col200) VALUES (@col1, @col2, ... @col200)

然后对于每一行,清除并设置参数并执行。

必须有一种更有效的方式。我能在几秒钟内读取和写入磁盘上的记录......

2 个答案:

答案 0 :(得分:9)

您应该使用SqlBulkCopy class

答案 1 :(得分:9)

SqlBulkCopy将非常快速地获取数据。

blogged not that long ago如何最大限度地提高效果。那里有一些统计数据和例子。我比较了两种技术,1使用SqlDataAdapter,1使用SqlBulkCopy - 底线是批量插入100K记录,数据适配器方法花了大约25秒,而SqlBulkCopy只需~0.8s。