2013-11-20 115 views
1

我想一次将大约5000个(通常可以是10K +)的行插入到SQL Server中。我的插入语句是由C#程序生成的。用C#将插入到SQL Server中?

一种方法可能是简单地生成一个完整的这些SQL语句的大字符串,然后实际上使SQL Server使用SqlCommand.ExecuteNonQuery();来执行它们。但是存在SQL Server可能无法执行这样的大语句的风险。

有没有一种方法可以将SQL语句推送到某种“SQL Server缓冲区”(如果有的话),然后最终执行它们?

编辑 -我正在使用SQL Server 2005,2008。所以,我需要与两者兼容的东西。

谢谢。

+0

Google for“SQL Server mass insert”,你会发现一系列解决方案。 – usr

+0

有更好的方法可以将数千行插入到数据库中,而不是自制(.net,php,coldfusion,无所谓)应用程序,但有时候确实有必要推出自己的应用程序。如果是这样,你必须逐个添加你的记录。 –

+0

@DanBracuk - 这正是我现在正在做的。我不确定是否逐行是最好的方法。如果我让它以5K,10K等的批次进行,那么SQL Server不会执行那些大字符串。可能是对尺寸的限制。 – Steam

回答

5

使用SqlBulkCopy实现该目标。我认为这将是最好的方法

+0

是的SqlBulkCopy应该是要走的路。看看[MSDN示例](http://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqlbulkcopy(v = vs.110).aspx) – Leadfoot