1

これが私のコードです:

            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

4

1 に答える 1

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として受け入れられるスペースを取得する方法がわかりません。

于 2012-08-24T12:06:28.007 に答える