将大量记录插入数据库

时间:2011-05-13 11:20:16

标签: c# sql-server-2008

我需要在数据上大量运行一些算法并将每个结果存储在数据库中。

算法运行次数为80,000-90,000,每个周期大约需要2秒(只是算法)。 所以这非常耗时。

我的数据库SQL server 2008。 我想使用ado.net实体框架(对于这个任务来说这不好吗?)
现在输出数据(需要存储在DB中)是纯粹的原始(不是很大),还有一些维护列,如日期和时间。

最佳做法是什么?
每个算法完成后,逐行插入?将结果存储在内存中,工作完成后插入数据?

3 个答案:

答案 0 :(得分:3)

首先针对所有记录运行算法后,你能不能尝试BulkInsert? 将数据导入数据库非常有效。

http://msdn.microsoft.com/en-us/library/ms188365.aspx

答案 1 :(得分:1)

您可以使用SqlBulkCopy类并使用DataTable作为源数据。与多个INSERT相比,它真的很快。

答案 2 :(得分:0)

如果你没有使用sqlbulkcopy,你可以做下一步:

  1. 将数据存储到本地变量
  2. 收集所有数据后,开始SQL事务并将每行插入db。执行完所有插入查询后,提交。