在C#应用程序中,将许多记录插入sql server的最佳方法是什么?

Dan*_*ing 0 c# sql

我需要从ac#application执行一个非常大的sql server插件.在20,000到50,000记录范围内的某个地方.

通过SQL Server执行插入的最快方法是什么?

我知道有几个选项,但我不知道哪个是最快的.

   insert into MyTable(column1, column2, ..., column*)
   select 'value','value',...,'value'
   union
   select 'value','value',...,'value'
Run Code Online (Sandbox Code Playgroud)

要么

   insert into MyTable(column1, column2, ..., column*)
   exec('select ''value'',''value'',...,''value'''
        'select ''value'',''value'',...,''value''')
Run Code Online (Sandbox Code Playgroud)

要么

   bulk insert from a data file
Run Code Online (Sandbox Code Playgroud)

要么

   Any better way that you know of :)
Run Code Online (Sandbox Code Playgroud)

Cad*_*oux 6

从C#开始,你可以使用SqlBulkCopy,但对于整体的原始速度,我希望你可以通过bcp获得更快的速度,你可以真正调整SSIS.在这两种情况下,您都可以有效地使用外部可执行文件--bcp或dtexec.

  • 链接文档中的一句话确实说明了一切(并暗示它是最快的*托管*方式):还有其他方法可以将数据加载到SQL Server表中(例如INSERT语句),但SqlBulkCopy提供了一个重要的性能优于他们 (2认同)