將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線程。這些問題以后有時間再寫出來。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM