将非常大的CSV文件加载到SQL-Server数据库中

是否有一种高性能的方法可以将非常大的CSV文件(大小为几千兆字节)加载到带有.NET的SQL-Server 2008数据库中?

我会把这个CSV阅读器和SqlBulkCopy结合起来; 即

 using (var file = new StreamReader(path)) using (var csv = new CsvReader(file, true)) // true = has header row using (var bcp = new SqlBulkCopy(connection)) { bcp.DestinationTableName = "TableName"; bcp.WriteToServer(csv); } 

这使用批量复制API来执行插入,同时使用完全托管(和快速)的IDataReader实现(关键的是,它将数据流式传输,而不是一次性加载所有数据)。

查看使用SQLBulkCopy类。