用于.txt文件格式的Microsoft Jet OLEDB 4.0连接字符串

时间:2015-01-21 06:52:01

标签: c# sql-server-2008 file-io oledb oledbconnection

这是我的.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文件中有7个多列,数百行。

我尝试了FMT=Delimited(,), FMT=TabDelimited,FMT=FiXed,但没有多列。我知道每个条目都需要一个(,)at is end,但我不能手动完成。

1 个答案:

答案 0 :(得分:1)

正如Jan Schreuder在他的文章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)