3

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

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

我尝试使用 300 万条插入语句来存储这些行,但它太慢了 :)

谢谢

4

4 回答 4

4

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

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

于 2013-02-26T11:24:31.423 回答
0

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

using (SqlBulkCopy bcp= new SqlBulkCopy(yourConnectionString))
{
    BulkCopy.DestinationTableName = "TargetTable";
    BulkCopy.WriteToServer(dataTable);
}
于 2013-02-26T11:26:28.780 回答
0

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

于 2013-02-26T11:26:59.110 回答
0

发送 300 万条插入语句快到了疯狂的速度!

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

于 2013-02-26T11:27:41.543 回答