批量插入CSV数据到SQL Server数据库

时间:2013-11-05 16:10:42

标签: c# sql-server csv identity bulkinsert

我尝试使用C#实现此目的,将数据从csv文件插入Microsoft SQL Server。

我有一个没有标识列的CSV文件。我想将此CSV中的数据插入到具有标识列的Microsoft SQL Server上的表中,但是,标识列未设置为auto_increment。

有没有办法实现这个目标?我在SQL中查看BULK INSERT,但我无法弄清楚如何让标识列正常工作。

我正在考虑连接到数据库和表以查找当前最大的ID号,然后修改CSV以包含标识列BULK INSERT新CSV。我认为这个想法可能有用,但我只是想知道是否有其他方法(更方便的方法)来解决问题。

1 个答案:

答案 0 :(得分:0)

在SQL Server中,identity和自动增量是相同的(identity是自动增量的SQL Server实现。)

(参考:http://social.msdn.microsoft.com/Forums/sqlserver/en-US/ef62d0c8-440f-4b27-8641-18ecd45d3f6c/what-is-the-difference-between-auto-increment-and-identity?forum=transactsql

此外,对于批量插入,我强烈建议您使用SqlBulkCopy(内置于System.Data)。这篇文章概述了如何使用它:http://cgeers.com/2011/05/19/entity-framework-bulk-copy/

请参阅此处,了解SqlBulkCopy使用身份插页:SqlBulkCopy Insert with Identity Column

(如果要从代码中指定标识值,请使用SqlBulkCopyOptions.KeepIdentity,或者只是从输入中排除标识列,并使用常规选项让SQL Server根据自动增量自动分配它。)