整数のような文字列を含む列を持つ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
}
}