關於C# & ADO.NET中用OLEDB讀 CSV檔案

看板C_Sharp作者 (帥阿! 三連霸!!!)時間17年前 (2008/07/31 10:09), 編輯推噓4(405)
留言9則, 3人參與, 最新討論串1/1
※ [本文轉錄自 Database 看板] 作者: zach (帥阿! 三連霸!!!) 看板: Database 標題: 不知道能不能在這問 關於C# & ADO.NET中用OLEDB讀CSV 時間: Thu Jul 31 10:08:11 2008 我的聯接字串與指令如下 strCon = " Provider = Microsoft.Jet.OLEDB.4.0 ; Data Source = " + folderwithpath + ";Extended Properties='Text;HDR=Yes;IMEX=1;FMT=Delimited'"; strCom = "Select * From " + System.IO.Path.GetFileName(filepath); 再用adapter fill到DataTable中 因為在CSV檔案中有一欄含有整數與在小數(在幾百ROW之後) 結果程式讀進來會自動將此欄讀為整數 想請問有沒有辦法將所有的欄位都讀成文字檔(的寫法)? (因為資料有18萬行以上,用stream讀再填入一直都很慢... 也不知道是寫得不好還是真的很慢...所以改用OLEDB去讀 ) 謝謝 謝謝 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 220.128.77.210 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 220.128.77.210

07/31 15:03, , 1F
直接用StreamReader class, 再用split方法就可以了....
07/31 15:03, 1F

07/31 15:03, , 2F
用OLEDB可能較慢....
07/31 15:03, 2F

07/31 16:13, , 3F
18萬ROW真的可以很快讀完嗎? 如果說要邊讀邊填另一table中?
07/31 16:13, 3F

07/31 16:29, , 4F
18萬行當然是不快啦, 邊讀邊秀出進度, 然後去做別的事...
07/31 16:29, 4F

07/31 16:32, , 5F
因為用stream讀一筆填一筆要將近45分鐘
07/31 16:32, 5F

07/31 16:32, , 6F
但是用OLEDB FILL 到TABLE只要30秒
07/31 16:32, 6F

07/31 16:33, , 7F
所以才會考慮這樣的做 但卻發現他會自動轉換欄位的格式
07/31 16:33, 7F

07/31 16:34, , 8F
不知道有沒有辦法讓她只用文字的方式轉入
07/31 16:34, 8F

08/01 18:32, , 9F
先弄一個前置作業 把整數的部分補上.0 變成有小數點如何?
08/01 18:32, 9F
文章代碼(AID): #18aHxQqn (C_Sharp)