我有一个包含300万行的csv文件,并希望使用c#将其存储在数据库中。 csv文件看起来像“device; date; value”。
我应该将它写入数组还是直接写入System.Data.DataTable?将DataTable存储到数据库(例如SQL-Server)的最快方法是什么。
我尝试使用300万次插入来存储行,但速度太慢了:)
感谢
答案 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行(数据越小,一次读入的次数越多)然后,在读取这些行后,将插入提交到数据库直接