将数百万条记录从csv文件插入SQL Server数据库的正确方法是什么?

时间:2016-05-28 10:43:27

标签: c# sql-server database csv sqlbulkcopy

我必须将.csv文件中的4000万条记录插入到数据库中,以下是我遵循的流程。

  • Windows服务1:

    • 阅读CSV
    • 验证记录
    • 使用SqlBulkCopy将有效记录插入成功表(中间表)。
  • Windows服务2.

    • 一次从成功表中获取10 000条记录
    • 为这些10 000运行foreach
    • 将每条记录发送到数据库以插入主表。

Windows Service 1大约需要30-40分钟,但Windows服务2需要大约5个小时才能完成任务(最短时间)。我有2种方法可以做到这一点,但无法确定哪种更好,并且可以提出建议。

  1. 创建4个单独的Windows服务并同时处理40000条记录
  2. 使用作业监视我们可以使用while循环
  3. 从Windows服务调用过程异步
  4. 我最大的疑问是我们在程序中使用事务并且将异步使用它,因为根据我使用事务锁的假设,表和其他进程需要处理它。

1 个答案:

答案 0 :(得分:2)

我认为你使用错误的工具来完成这项工作。 c#apps可能会成功,但使用集成服务有一种更强大的方法。

我在这里猜测,但中间的这些表是要转换还是检查,或者可能批量导入下来?

SSIS可以使用日志限制和SQL批量导入工具完成所有这些工作。我目前正在进行医院数据导入,每晚大约有8,000,000条记录,这需要几分钟而不是几小时。

关于SQL如何处理如此大的数据输入的一个很好的解读是this article