如何提高CSV阅读性能
问题描述:
我正在阅读CSV文件并将数据从CSV文件保存到我的数据库。如何提高CSV阅读性能
我使用Streamreader
的ReadLine()
来读取每一行,然后将其插入到我的数据库,这是工作正常。但在分析我的代码后,我注意到ReadLine()
占用了太多时间。
如何提高我的任务绩效。
请为我提供其他选项。
性能是这里的主要关注点。
答
您确定StreamReader.ReadLine
是这里的缓慢部分吗? 我猜插入数据到数据库是很多比从本地文件中读取一行文本慢!
如果文件不太大,您可以尝试使用System.IO.File.ReadAllLines()
将文件读入内存。
答
我建议使用许多CSV解析库之一 - 您应该测试它们以了解它们的性能。
FileHelpers是一个流行的库,并且codeproject也有severaldifferent个。
然而,有可能问题在于逐行插入到数据库中。
您应该尽可能多地向数据库读取文件,而不是逐行读取文件。
您的CSV文件有多大?你能把它分成更小的文件吗? –
这是我的代码: using(StreamReader readFile = new StreamReader(filePath)) { \t string line; \t而((行= readFile.ReadLine())!= NULL){ \t \t //将每行DB \t}} 和 我的CSV文件的大小非常大(100 MB +) 我没有尝试过分成小文件。 我主要关心的是从csv中读取一行并将其插入到数据库表中。 – MSHAN
正如@Barry所说,使用BulkInsert将结果插入到数据库中。您也可以拆分文件并使用任务并行库来读取花费更少的时间读取文件。 –