我正在读取CSV文件并将CSV文件中的数据保存到我的数据库中。
我正在使用Streamreader
的{{1}}来读取每一行,然后将其插入到我的数据库中,这很正常。但在对我的代码进行分析后,我注意到ReadLine()
占用了太多时间。
如何改善任务的效果。
请为我提供其他选择。
表现是这里的主要关注点。
答案 0 :(得分:2)
您可以对此MSDN link使用SqlBulkCopy
课程。它比单独的逐行插入快一个数量级。 MSDN页面有一个完整的例子。
您还可以使用StreamReader.Peek
方法加快阅读速度 - MSDN link。再次,MSDN链接就是一个很好的例子。
答案 1 :(得分:0)
你确定StreamReader.ReadLine
在这里很慢吗?
我想在数据库中插入数据比从本地文件读取一行文本要慢多!
如果文件不太大,您可以尝试使用System.IO.File.ReadAllLines()
一步将文件读入内存。
答案 2 :(得分:0)
我建议使用众多CSV解析库中的一个 - 您应该测试它们以了解它们的执行情况。
FileHelpers是一个受欢迎的库,代码项目也有several different个。
然而,问题可能是逐行插入数据库。
您应该尽可能多地阅读文件和bulk insert到数据库,而不是逐行。