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

本文关键字:方式 数据 存储 数据库 使用 | 更新日期: 2023-09-27 18:01:15

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

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

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

谢谢

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

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

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

我猜BCP会很快。一旦你有了数据表中的数据,你可以尝试

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

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

发送300万条insert语句的速度简直慢得不可思议!

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