我正在閱讀CSV文件並將數據從CSV文件保存到我的數據庫。如何提高CSV閱讀性能
我使用Streamreader
的ReadLine()
來讀取每一行,然後將其插入到我的數據庫,這是工作正常。但在分析我的代碼後,我注意到ReadLine()
佔用了太多時間。
如何提高我的任務績效。
請爲我提供其他選項。
性能是這裏的主要關注點。
我正在閱讀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將結果插入到數據庫中。您也可以拆分文件並使用任務並行庫來讀取花費更少的時間讀取文件。 –