使用C#.net将数据插入Sql Server数据库的最快方法

时间:2017-03-04 16:13:55

标签: c# sql-server

我想知道将数据插入Sql Server数据库的最快方法是什么。 目前我正在使用带有“INSERT”命令的SqlCommand,但它需要花费很多时间,因为我必须插入很多行,如500k。 你能告诉我在我的情况下这是最好的解决方案吗? 我还读过我可以使用SqlBulkCopy,您认为这可能是一个很好的解决方案吗?

3 个答案:

答案 0 :(得分:1)

如果您正在谈论常规的“程序化”数据导入,SqlBulkCopy是我的经验之路。否则,服务器本身的数据库管理技巧可能更合适。

  

Microsoft SQL Server包含一个名为bcp的常用命令行实用程序   用于快速批量将大文件复制到SQL中的表或视图中   Server数据库。 SqlBulkCopy类允许您编写托管   提供类似功能的代码解决方案。还有其他   将数据加载到SQL Server表的方法(INSERT语句,for   例如)但SqlBulkCopy提供了显着的性能优势   在他们身上。

我工作的一个地方,我们每天导入和合并大约一百万条记录。我们使用了SqlBulkCopy和存储过程的组合。批量复制将导入到“临时”表,存储过程将执行INSERT INTO SELECTUPDATE SELECT (SO has questions with good examples)来合并数据。整个事情过去一分钟(可能是两分钟)。

  

使用SQL,您可以将信息从一个表复制到另一个表。该   INSERT INTO SELECT语句从一个表复制数据并插入它   进入现有的表格。

我发现BulkCopy难以维护,但性能优势使其难以忍受。此外,如果您有一个单独的表(与DataTable匹配)以接收导入,则更容易管理。

答案 1 :(得分:-1)

使用批量复制会显着提高性能

见此处参考: https://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqlbulkcopy(v=vs.110).aspx

答案 2 :(得分:-1)

使用SQLBulkCopy,在此之前确保您要插入记录的表上的所有非聚集索引都应该被删除然后重新创建它,对于您的情况来说会快得多。