作者Gamakatsu (Gama)
看板C_Sharp
標題[問題] 如何有效率讀大量CSV資料進DataGridView
時間Tue Mar 3 23:08:23 2015
現在手上有約莫300個CSV檔案,每個檔案內有 18000 Rows and 27 Columns
目前初步的想法是...
1. 將每個檔案的資料讀入,並放入一個DataGridView內顯示
2. 將讀入的資料拿來做處裡及分析
目前處理方式如下:
a. 用一個 foreach 迴圈列舉出資料夾內的所有csv檔案
b. 用一個while讀檔案內所有資料(一次讀取一整行)
c. 將(b)讀入的資料以 String.split 方法切開
d. 將切開後的資料儲存起來 and 顯示在DataGridView內
上述的方法實作起來相當的耗時...
請問版上的各位高手們有什麼建議可以提升處理此情況的效率嗎?
謝謝大家
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 36.224.53.34
※ 文章網址: https://webptt.com/m.aspx?n=bbs/C_Sharp/M.1425395305.A.E83.html
1F:推 totte: LumenWorks.Framework.IO 03/03 23:30
2F:→ totte: 或 Microsoft.VisualBasic.FileIO.TextFieldParser 03/03 23:30
3F:→ soup514: code project就有不少可以參考 03/03 23:55
4F:→ soup514: 找fast csv reader 03/03 23:55
5F:→ wvsrugby: 顯示很花時間,用DataSet較佳 03/04 00:28
6F:推 Litfal: 是說code project的那個reader並不會特別快,但他考慮的 03/04 00:30
7F:→ Litfal: CSV結構比較完整,單純用Split會有一些問題 03/04 00:30
8F:→ Litfal: 然後顯示的行為你要考慮,是否用部分檢視就好。 03/04 00:34
9F:→ Litfal: 以我的經驗而言,最慢的部分會在顯示在DataGridView,其次 03/04 00:40
10F:→ Litfal: 是Decode,再來是Split。儲存我不知道你怎麼存就先不考慮 03/04 00:41
11F:→ Litfal: 忽然想到補充:如果你是FAT32又放很多檔案的話,列舉也很慢 03/04 01:26
12F:→ GoalBased: 你資料是死的話就寫進DB存起來呀 03/04 08:48