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

这是我的代码:

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。

日期字段也表现exception,即使我插入scheme.ini DateTimeFormat我也没有像我在格式中指定的那样。

任何帮助将不胜感激,如何处理它,我想使用ODBC和查询CSV数据,如数据库与WHERE something = something

我在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