作者zach (帥阿! 三連霸!!!)
看板C_Sharp
標題關於C# & ADO.NET中用OLEDB讀 CSV檔案
時間Thu Jul 31 10:09:29 2008
※ [本文轉錄自 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
1F:推 horngsh:直接用StreamReader class, 再用split方法就可以了.... 07/31 15:03
2F:推 horngsh:用OLEDB可能較慢.... 07/31 15:03
3F:→ zach:18萬ROW真的可以很快讀完嗎? 如果說要邊讀邊填另一table中? 07/31 16:13
4F:推 horngsh:18萬行當然是不快啦, 邊讀邊秀出進度, 然後去做別的事... 07/31 16:29
5F:→ zach:因為用stream讀一筆填一筆要將近45分鐘 07/31 16:32
6F:→ zach:但是用OLEDB FILL 到TABLE只要30秒 07/31 16:32
7F:→ zach:所以才會考慮這樣的做 但卻發現他會自動轉換欄位的格式 07/31 16:33
8F:→ zach:不知道有沒有辦法讓她只用文字的方式轉入 07/31 16:34
9F:推 sheauren:先弄一個前置作業 把整數的部分補上.0 變成有小數點如何? 08/01 18:32