将csv文件导入到数据库中
1、csv文件簡介
CSV全稱?Comma Separated values,是一種用來存儲數據的純文本文件格式,通常用于電子表格或數據庫軟件。這樣你就發現了,csv其實就是純文本文件,可以使用記事本打開。但是因為他一般表示的是表,所以windows下默認的是用excel打開的。
他的規則如下:
?開頭是不留空,以行為單位。
- 可含或不含列名,含列名則居文件第一行。(這一點在插入時需要注意判斷,如果第一行是列名,那么需要把第一行數據拋棄)
- 一行數據不垮行,無空行。
- 以半角符號[,]作分隔符,列為空也要表達其存在。
- 列內容如存在[,],則用雙引號[””]將該字段內容包含起來。
- 列內容如存在[”],雙引號[””]將該字段內容包含起來,并且在內容中用兩個雙引號表示一雙引號[””]。
- 文件讀寫時引號,逗號操作規則互逆。
- 內碼格式不限,可為ASCII、Unicode或者其他。
2、插入數據庫操作
將csv文件插入數據庫是一個常見的需求,最簡單的做法就是直接讀取csv文件,然后一行一行讀出來后用split(",")分割之后插到數據庫中。當然這種方法雖然看起來簡單,但是有寫問題很難解決。比如列內容中有[,]的問題,這種情況如果用這種方法的話很難判斷。所以一般情況下不能推薦使用這種方法來插入數據。
今天我介紹的方法是用Microsoft ActiveX Data Objects 來做:
(1)引入Microsoft ActiveX Data Objects
右擊“引用”——COM選項卡——Microsoft ActiveX Data Objects,我的電腦是6.0版本的,實際使用中版本間差距不大,代碼都可以通用。
?
?
(2)代碼部分:
/// <summary>/// 將csv文件導入到數據庫中/// </summary>/// <param name="strCSVFile">導入的文件名</param>/// <param name="strPathToTextFile">文件的存儲路徑</param>public void test(string strCSVFile, string strPathToTextFile){Connection adoCSVConnection = null;Recordset adoCSVRecordSet = null;try{adoCSVConnection = new Connection();adoCSVRecordSet = new Recordset();adoCSVConnection.Open(string.Format("Provider=Microsoft.Jet.OLEDB.4.0;Data Source={0};Extended Properties=\"text;HDR=YES;FMT=Delimited\"", strPathToTextFile));adoCSVRecordSet.Open(string.Format("SELECT * FROM {0}", strCSVFile), adoCSVConnection);while (!adoCSVRecordSet.EOF){for (int i = 0; i < adoCSVRecordSet.Fields.Count; i++){var strsource = adoCSVRecordSet.Fields[i].Value;//到這里你懂的了吧...^_^}adoCSVRecordSet.MoveNext(); }}catch (Exception ex){}finally{if (adoCSVRecordSet != null){adoCSVRecordSet.Close();}if (adoCSVConnection != null){adoCSVConnection.Close();}}}
這種方法其實是將csv文件作為一種數據庫來操作,你可以看到有連接字符串"Provider=Microsoft.Jet.OLEDB.4.0;Data Source={0};Extended Properties=\"text;HDR=YES;FMT=Delimited\""。
?
將csv文件插入到數據庫中還有很多因素要考慮,比如對于大批量的數據需要用到多線程,以及對于mvc中無法使用webform中的委托回調函數來獲得數據更改ui線程。這些問題以后有時間再寫出來。
轉載于:https://www.cnblogs.com/zhangkai2237/archive/2012/08/12/2635317.html
總結
以上是生活随笔為你收集整理的将csv文件导入到数据库中的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: WPF换肤之七:异步
- 下一篇: Android 开发笔记 ListVie