OdbcConnection文本驱动程序忽略scheme.ini设置(OdbcConnection

2019-09-21 14:26发布

这里是我的代码:

            OdbcConnection conn = new OdbcConnection("Driver={Microsoft Text Driver (*.txt; *.csv)};DSN=scrapped.csv");
        conn.Open();
        OdbcCommand foo = new OdbcCommand(@"SELECT * FROM [scrapped.csv] WHERE KWOTA < 100.00", conn);
        IDataReader dr = foo.ExecuteReader();
        StreamWriter asd = new StreamWriter("outfile.txt");
        while (dr.Read())
        {
            int cols = dr.GetSchemaTable().Rows.Count;
            for (int i = 0; i < cols; i++)
            {
                asd.Write(string.Format("{0};",dr[i].ToString()));
            }
            asd.WriteLine();
        }
        asd.Flush();
        asd.Close();
        dr.Close();
        conn.Close();

这里是我的Scheme.ini

      [scrapped.csv]

Format=Delimited(;)
NumberDigits=2
CurrencyThousandSymbol= 
CurrencyDecimalSymbol=,
CurrencyDigits=2

Col1=DataOperacji Date
Col2=DataKsiegowania Date
Col3=OpisOperacji Text
Col4=Tytul Text
Col5=NadawcaOdbiorca Text
Col6=NumerKonta Text
Col7=Kwota Currency
Col8=SaldoPoOperacji Currency

在这里我从CSV示例:

2013-01-22;2013-08-24;notmatter;"notmatter";"notmatter";'notmatter';7 111,55;10 222,20;
2013-03-26;2013-08-23;notmatter;"notmatter";"notmatter";'notmatter';-275,00;15 466,24;

所以,即使我有scheme.ini和区域设置日期和货币集(应使用ODBC通过defult但都没有),我写到输出文件中值是一塌糊涂。

他们是空的,如果有空间(我的地方thousend分隔符),如果我有像值15,45,我得到15,4500代替。

日期字段也表现异常,即使我插入到scheme.ini DateTimeFormat就像我在格式指定我什么也没得到。

任何帮助,将不胜感激,用它做什么,我想用ODBC和查询CSV数据像数据库WHERE something = something

Answer 1:

我添加了一行到您的SCHEMA.INI和反对一个ADODB连接跑,它在日期的事情为我工作,其他位仍然不正确。 注意DateTimeFormat。

[scrapped.csv]
Format=Delimited(;)
NumberDigits=2
CurrencyThousandSymbol= 
CurrencyDecimalSymbol=,
CurrencyDigits=2
DateTimeFormat="yyyy-mm-dd"

Col1=DataOperacji Date
Col2=DataKsiegowania Date
Col3=OpisOperacji Text
Col4=Tytul Text
Col5=NadawcaOdbiorca Text
Col6=NumerKonta Text
Col7=Kwota Currency
Col8=SaldoPoOperacji Currency

您可能还需要:

ColNameHeader=False
MaxScanRows=0

但此刻,我看不到的方式来获得接纳为CurrencyThousandSymbol空间



文章来源: OdbcConnection Text Driver ignores scheme.ini settings
标签: c# csv odbc