c#
  • .net
  • oledb
  • text-files
  • 2010-10-31 95 views 5 likes 
    5

    我的製表符分隔的文件是這樣的:使用的OleDbConnection閱讀製表符分隔的文件

    ISO ISO3 ISO-Numeric 
    AD AND 20 
    

    我一直沒有運氣下面的代碼。

    OleDbConnection cn = new OleDbConnection(@"Provider=Microsoft.Jet.OLEDB.4.0;Data Source= |DataDirectory|;Extended Properties='text;HDR=Yes;FMT=TabDelimited'"); 
    OleDbCommand cmd = new OleDbCommand(@"SELECT * FROM countryInfo.txt", cn); 
    OleDbDataAdapter da = new OleDbDataAdapter(cmd); 
    
    cn.Open(); 
    
    DataTable dt = new DataTable(); 
    da.Fill(dt); 
    

    下面是Dataset Visualizer的屏幕截圖。它顯然不是我以後的輸出。 alt text

    有什麼建議嗎?這是我的Schema.ini文件。它與文本文件位於同一個目錄中。

    [countryInfo.txt] 
    Format=TabDelimited 
    ColNameHeader=True 
    CharacterSet=ANSI 
    

    我應該只是使用類似FileHelpers而不是?


    @Hans Passant下面是截圖。 alt text

    +0

    我總是解析該文件我自己。 – 2010-10-31 15:24:21

    +0

    幾年前我和這些人一起工作過,所以我很生疏。但我記得schema.ini必須與數據文件位於同一個目錄中。此外,前欄中有#號可能是個問題,但我不確定。它可能會將您的列標題行解釋爲註釋掉。 – 2010-10-31 15:27:54

    +0

    Schema.ini位於相同的文件夾中。我也嘗試刪除#號,但似乎沒有幫助。 – 2010-10-31 16:22:18

    回答

    1

    那麼,一個明顯的候選人是,這個白色空間實際上並不是一個選項卡,但空間。嘗試FMT =分隔符()。使用十六進制查看器來查看真正存在的內容。 Backgrounder is here

    this thread顯示了爲什麼使用像過去9年一直不被支持的諸如Jet這樣的代碼塊的錯誤塊是錯誤的。有了答案,將schema.ini中的第一行留空。

    +0

    FMT =分隔符()不起作用。當我在十六進制編輯器中打開文件時,我看到''。場之間。那個的真實意義是什麼? – 2010-10-31 16:27:53

    +0

    你應該看到十六進制數字,而不是點。張貼屏幕截圖。 – 2010-10-31 16:44:08

    +0

    不知道「bh」可能意味着什麼,這是要求屏幕截圖的要點。 09的確是一個標籤的ascii代碼。 – 2010-10-31 17:09:55

    2

    創建並保存一個schema.ini文件,含有下列文字的應用程序文件夾:

    ------------------Schema.ini file starts here----------------- 
    [Data.txt] 
    ColNameHeader=True 
    Format=TabDelimited 
    Col1=First_Name Text 
    Col2=Middle_Initial Text 
    Col3=Last_Name Text 
    ------------------Schema.ini file ends here----------------- 
    

    然後用下面的代碼加載data.txt文件:

    string fileName = string.Format("{0}", AppDomain.CurrentDomain.BaseDirectory); 
    string connectionString = string.Format(@"Provider=Microsoft.Jet.OLEDB.4.0; Data Source={0}; " + "Extended Properties=\"text;HDR=YES;FMT=TabDelimited;\"", fileName); 
    string sql = "select * from " + "Data.txt"; 
    
    OleDbConnection con = new OleDbConnection(connectionString); 
    con.Open(); 
    
    OleDbDataAdapter dap = new OleDbDataAdapter(sql, con); 
    DataTable dt = new DataTable(); 
    dt.TableName = "Data"; 
    dap.Fill(dt); 
    
    con.Close(); 
    
    相關問題