3

整数のような文字列を含む列を持つCSVファイルがあります。つまり、文字列として処理する必要がありますが、数値であるため、整数としてインポートされているように見えます(先行ゼロを削除)。

データ例:

  • 0000000000079
  • 0000999000012
  • 0001002000005
  • 0004100000007

私が見ている問題は、最後のサンプルデータポイントがDBNull.Valueとして渡されることです。これは、OleDBがその列を整数として処理しており(データポイントも先行ゼロなしで通過する)、0004100000007が最大の整数値より大きいためだと思います。

「列[0]は文字列です。整数として読み取らないでください」と言う方法はありますか?データを読み取るとき?

私が現在使用しているコードは次のとおりです。

OleDbConnection dbConn = new OleDbConnection(SourceConnectionString);
OleDbCommand dbCommand = new OleDbCommand("SELECT * FROM test.csv", dbConn);
dbConn.Open();
OleDbDataReader dbReader = dbCommand.ExecuteReader();

while (dbReader.Read())
{
    if (dbReader[0] != DBNull.Value)
    {
         // do some work
    }
}
4

5 に答える 5

3

列を文字列として読み取る必要がある場合は、リーダーで GetString() メソッドを使用してみてください。

string myStringValue = reader.GetString(0);
于 2008-10-26T10:18:05.477 に答える
1

エクスポートプロセスを管理していますか?その場合、文字列アイテムを引用符で囲んでデータをCSVにエクスポートできますか?

これが仕事の1つである場合は、Integration Servicesを使用して事前定義されたSQLテーブルにファイルをインポートするだけですが、これは繰り返し発生するタスクになると思います。

于 2008-11-05T11:02:23.647 に答える
1

ファイルに関する情報を指定するために使用する必要がある Schema.ini ファイルがあります。フィールドの種類と長さ、列ヘッダーの有無、フィールド区切り文字が含まれます。

ここにMSDN情報があります。
http://msdn.microsoft.com/en-us/library/ms709353.aspx

于 2009-02-23T12:56:19.823 に答える
0

このCSVリーダーを使用してみましたか?それは一般的に非常に尊敬されています。おそらくそれを試してみてください...

于 2008-10-26T09:10:02.617 に答える
0

私は専門家ではありませんが、固定ファイル形式に対応していますか? http://csharptutorial.com/blog/exclusive-how-to-export-a-datatable-to-a-fixed-file-format-the-easy-way-using-odbc-or-jet-engine/

于 2011-04-17T17:43:51.753 に答える