将大量记录插入SQL Server数据库的最快方法是什么?

时间:2009-12-12 00:10:21

标签: c# sql database insert

我需要将从磁盘读取的数百万条记录插入SQL服务器。我正在一台机器上的文件中解析这些,这是一个单线程的过程。

理想情况下,如果SQL服务器是本地或远程的,我希望它能很好地运行。它必须在C#中以编程方式完成。

4 个答案:

答案 0 :(得分:8)

最快的方法是使用SSIS进行并行读取,NUMA关联客户端,分区写入并将所有分区切换到最后的单个表中。这会加载more than 2 TB per hour

如果您有合适的文本文件,则可能是批量复制实用程序。

如果要从流程中插入,则可以使用SqlBulkCopy.WriteToServer,但必须将数据显示为IDataReader,或者可以使用straigh SqlCommand插入。稍后,如果您批量插入提交,您将获得良好的trhoughput。通常的瓶颈是单个语句提交上的日志刷新。

答案 1 :(得分:1)

试试bulk copy。您可以使用SqlBulkCopy class编写一个小应用程序来读取内存中的数据并将其加载到SQL Server中。

答案 2 :(得分:0)

bcp实用程序快速且可配置。虽然它是一个独立的实用程序,但它从命令行运行,当然可以从c#召唤。

答案 3 :(得分:0)

取决于您的输入文件格式(1)它适合批量复制,因此,使用它,(2)它不适合批量复制,或者您需要额外的处理/检查/等等...在服务器端;所以DO跳入多线程插入循环,每1000行或更多行提交,并可能使用数组插入