如何在.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阅读器 ? 它通常非常受尊重。 也许试一试……