C# 将数据表放入SQL Server的最快方法是什么?

C# 将数据表放入SQL Server的最快方法是什么?,c#,.net,sql-server,database,bulkinsert,C#,.net,Sql Server,Database,Bulkinsert,我在内存中有一个数据表,需要直接转储到SQL Server临时表中 插入数据后,我对其进行一点转换,然后将这些记录的子集插入到一个永久表中 此操作最耗时的部分是将数据放入临时表 现在,我必须使用临时表,因为这个应用程序的多个副本同时运行,在实际插入永久表之前,我需要一层隔离 从C#数据表到SQL临时表的大容量插入的最快方法是什么? 我不能使用任何第三方工具,因为我正在转换内存中的数据 我当前的方法是创建一个参数化的SqlCommand: INSERT INTO #table (col1, col

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

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

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

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

从C#数据表到SQL临时表的大容量插入的最快方法是什么?

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

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

INSERT INTO #table (col1, col2, ... col200) VALUES (@col1, @col2, ... @col200)
然后对于每一行,清除并设置参数并执行

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

您应该使用。

将非常快地获取数据


我知道如何最大限度地提高性能。这里有一些统计数据和例子。我比较了两种技术,一种是使用SqlDataAdapter,另一种是使用SqlBulkCopy——底线是批量插入100K条记录,数据适配器方法耗时约25秒,而SqlBulkCopy只需0.8秒。

太棒了,但你知道它是否可以用于临时表吗?@John Gietzen——我通常的做法是加载到“真实”中表-然后在完成后将其删除。好吧,这在某种程度上是可行的,但是这个应用程序有大约10个副本可以同时运行。您知道大容量副本是否可以作为事务的一部分吗?@John Gietzen-如果它们都是彼此独立的,请加载到一个“临时”实际表中-只需在运行时生成一个唯一的表名,以阻止它们争用。你可以做批量复制作为交易的一部分(),但我个人从来没有这样做过好消息!您可以使用外部事务,也可以使用临时表!从20分钟降到8秒!数据集中有多少行?插入需要多长时间?200000行,45分钟以上。+1,但我接受SLaks,因为他比我快一点。谢谢你的链接。他快速准确,就像狙击步枪子弹。