这是我的代码:
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
答案 0 :(得分:0)
我在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