我必须将.csv
文件中的4000万条记录插入到数据库中,以下是我遵循的流程。
Windows服务1:
SqlBulkCopy
将有效记录插入成功表(中间表)。Windows服务2.
Windows Service 1大约需要30-40分钟,但Windows服务2需要大约5个小时才能完成任务(最短时间)。我有2种方法可以做到这一点,但无法确定哪种更好,并且可以提出建议。
我最大的疑问是我们在程序中使用事务并且将异步使用它,因为根据我使用事务锁的假设,表和其他进程需要处理它。
答案 0 :(得分:2)
我认为你使用错误的工具来完成这项工作。 c#apps可能会成功,但使用集成服务有一种更强大的方法。
我在这里猜测,但中间的这些表是要转换还是检查,或者可能批量导入下来?
SSIS可以使用日志限制和SQL批量导入工具完成所有这些工作。我目前正在进行医院数据导入,每晚大约有8,000,000条记录,这需要几分钟而不是几小时。
关于SQL如何处理如此大的数据输入的一个很好的解读是this article