繁体   English   中英

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

[英]What is the proper way to insert millions of records from a csv file into a SQL Server database?

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

  • Windows Service 1:

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

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

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

  1. 创建4个单独的Windows服务并同时处理40000条记录
  2. 使用工作表,我们可以使用while循环
  3. 从Windows服务调用过程异步

我最大的疑问是,我们正在过程中使用事务,并且将与它异步工作,因为按照我的假设,使用事务会锁定表,而其他进程则需要对其进行处理。

我认为您为此工作使用了错误的工具。 C#应用程序可能会解决问题,但是使用集成服务可以更有效地完成此任务。

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

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

很好看的太各地的如此大的数据输入了SQL的交易是这篇文章

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM