2015-01-21 86 views
2

下面的Microsoft Jet OLEDB 4.0的連接字符串是.txt文件我的連接字符串和一些代碼段爲.txt文件格式

public class FileTransfers 
{ 

    public void fileFromDrive(string filename) 
    { 
     FileInfo file = new FileInfo(filename); 
     string fileConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + 
       file.DirectoryName + 
       "; Extended Properties='text;HDR=YES;FMT=Delimited(,)';"; 

     using (OleDbConnection con = new OleDbConnection(fileConnectionString)) 
     { 
      using (OleDbCommand cmd = new OleDbCommand(
       string.Format("SELECT * FROM [{0}]", file.Name), con)) 
      { 
       con.Open(); 



       using (OleDbDataAdapter adp = new OleDbDataAdapter(cmd)) 
       { 
        DataTable tbl = new DataTable("Attendance"); 
        adp.Fill(tbl); 
       } 
      } 
     } 
    } 
} 

但問題是,當我在tbl調試記錄它讓我看到數據只有一列,但在我的.txt文件中有七個多列和幾百行。

我已經試過FMT=Delimited(,), FMT=TabDelimited,FMT=FiXed但並未得到多個列。我知道每一個條目都需要一個(,),但我不能手動完成。

+0

得到了答案: 第1步:問題右擊解決方案 - >屬性 - >目標Plateform到(x86)。第2步:將名爲SCHEMA.INI在數據記錄文件存在同一文件夾中的文件,現在打開SCHEMA.INI和寫入文件[YourFileName]下一行寫格式= TabDelimited – Samad 2015-01-22 06:35:42

+0

是我解決了這兩個步驟,有表有單獨的專欄感覺好:) – Samad 2015-01-22 06:43:01

+0

我已經引用您的解決方案,爲將來的使用作爲一個問題與一些細節。很高興你解決了你的問題。 – Mehrad 2015-01-22 06:53:55

回答

1

有一些細節你需要考慮這樣做的過程賈恩·施羅伊德在他的文章中提到Using OleDb to Import Text Files

Jet引擎使得對文件的內容的假設。此 可能會導致不正確的導入。例如,它可能認爲列 包含日期值。但實際上,您的文件應該將字段 作爲字符串處理。在這些情況下,您應該創建一個Schema.Ini文件, 描述了每列的值類型。該類在打開分隔文件之前創建了一個 Schema.Ini文件,但只有 指定了分隔符。您可能需要將其更改爲使用 預定義的INI文件來描述您的輸入文件。

因此,請按照規定創建schema.ini文件,您的問題將全部消失。它的內容應該這樣看,

[FileName.csv] 
ColNameHeader=True 
Format=CSVDelimited 

更多細節條款怎麼樣請參閱下面的MSDN指導,

Schema.ini File (Text File Driver)