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

我有一个CSV文件,其中的列包含看起来像整数的字符串。 那就是它们应该作为字符串来处理,但由于它们是数字,它们似乎是作为整数导入的(从前导零中删除)。

示例数据:

  • 0000000000079
  • 0000999000012
  • 0001002000005
  • 0004100000007

我看到的问题是最后一个示例数据点是DBNull.Value。 我假设这是因为OleDB将该列视为整数(数据点也没有它们的前导零),并且0004100000007大于最大整数值。

有没有办法说“column [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 } } 

当您需要将列读为字符串时,尝试在阅读器中使用GetString()方法:

 string myStringValue = reader.GetString(0); 

你有控制出口过程吗? 如果可以,可以使用字符串项周围的引号将数据导出到CSV?

如果这是一个作业,那么只需使用Integration Services将文件导入预定义的SQL表,但我怀疑这将是一个重复的任务。

有一个Schema.ini文件需要用于指定有关该文件的信息。 它包括字段类型和长度,是否有列标题和字段分隔符是什么。

这是关于它的MSDN信息。
http://msdn.microsoft.com/en-us/library/ms709353.aspx

您是否尝试过使用此CSV阅读器 ? 它通常非常受尊重。 也许试一试……