如何在.Net中使用OleDB从CSV文件中导入我想要的格式的值?

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
    }
}
5个回答

3
尝试在读取列为字符串时使用reader中的GetString()方法:

尝试在读取列为字符串时使用reader中的GetString()方法:

string myStringValue = reader.GetString(0);

我不经常写这种类型的代码,我不知道 GetString 方法... 很好。 - Brian Schmitt

1

您是否掌控着导出流程?如果是这样,数据是否可以以带引号的CSV格式导出字符串项?

如果这只是一次性任务,则可以使用集成服务将文件导入预定义的SQL表中,但我猜测这可能是一个经常性的任务。


1


0

你尝试过使用这个CSV reader吗?它通常很受尊重。也许可以试一下...


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接