最快的方法使用c#将数据存储在数据库中

时间:2013-02-26 11:22:55

标签: c# database performance store

我有一个包含300万行的csv文件,并希望使用c#将其存储在数据库中。 csv文件看起来像“device; date; value”。

我应该将它写入数组还是直接写入System.Data.DataTable?将DataTable存储到数据库(例如SQL-Server)的最快方法是什么。

我尝试使用300万次插入来存储行,但速度太慢了:)

感谢

4 个答案:

答案 0 :(得分:4)

您可以在DataTable中加载数据,然后使用SqlBulkCopy将日期复制到sql server中的表

  

SqlBulkCopy类可用于仅将数据写入SQL Server   表。但是,数据源不仅限于SQL Server;任何   可以使用数据源,只要数据可以加载到   DataTable实例或使用IDataReader实例读取。   

答案 1 :(得分:0)

我猜BCP会很快。在DataTable中获得数据后,您可以尝试

using (SqlBulkCopy bcp= new SqlBulkCopy(yourConnectionString))
{
    BulkCopy.DestinationTableName = "TargetTable";
    BulkCopy.WriteToServer(dataTable);
}

答案 2 :(得分:0)

我认为最好的方法是打开流阅读器并逐行创建行。在while循环中使用ReadLine并拆分以查找不同的部分。

答案 3 :(得分:0)

发送300万个插入语句接近于疯狂的慢!

通过使用事务缓冲它并一次读取200-1000行(数据越小,一次读入的次数越多)然后,在读取这些行后,将插入提交到数据库直接