我有一个包含 300 万行的 csv 文件,并希望使用 c# 将其存储在数据库中。csv 文件看起来像“设备;日期;值”。
我应该将它写入数组还是直接写入 System.Data.DataTable?以及将此 DataTable 存储到数据库(例如 SQL-Server)中的最快方法是什么。
我尝试使用 300 万条插入语句来存储这些行,但它太慢了 :)
谢谢
我有一个包含 300 万行的 csv 文件,并希望使用 c# 将其存储在数据库中。csv 文件看起来像“设备;日期;值”。
我应该将它写入数组还是直接写入 System.Data.DataTable?以及将此 DataTable 存储到数据库(例如 SQL-Server)中的最快方法是什么。
我尝试使用 300 万条插入语句来存储这些行,但它太慢了 :)
谢谢
您可以在 DataTable 中加载数据,然后使用SqlBulkCopy将日期复制到 sql server 中的表中
SqlBulkCopy 类可用于仅将数据写入 SQL Server 表。但是,数据源不限于 SQL Server;可以使用任何数据源,只要数据可以加载到 DataTable 实例或使用 IDataReader 实例读取。.
我猜BCP会很快。在 DataTable 中获得数据后,您可以尝试
using (SqlBulkCopy bcp= new SqlBulkCopy(yourConnectionString))
{
BulkCopy.DestinationTableName = "TargetTable";
BulkCopy.WriteToServer(dataTable);
}
我认为最好的方法是打开流阅读器并逐行创建行。在 while 循环中使用 ReadLine 并拆分以查找不同的部分。
发送 300 万条插入语句快到了疯狂的速度!
通过使用事务和一次读取例如 200-1000 行来缓冲它(数据越小,一次可以读取的越多),然后在读取这些行之后,直接将插入提交到数据库。