有没有办法强制所有列成为字符串,同时从.csv文件读取数据到DataTable?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了有没有办法强制所有列成为字符串,同时从.csv文件读取数据到DataTable?相关的知识,希望对你有一定的参考价值。
目前我正在开发一个项目,要求我从.csv文件中读取并将数据导入数据库。它的工作正常,只有一列。在raw / .csv文件中,此字段可以包含int / string。因此,当读取文件时,如果第一列由int组成,那么之后的任何字符串都将被读取。但是如果第一个值碰巧是一个字符串,那么它就会按预期工作。有没有解决方案可以实现我现有的工作解决方案。
string sql = @"SELECT * FROM [" + strFileName + "]";
DataTable rawDataTable = new DataTable();
using (OleDbConnection connection = new OleDbConnection(connString))
using (OleDbCommand command = new OleDbCommand(sql, connection))
using (OleDbDataAdapter adapter = new OleDbDataAdapter(command))
{
adapter.Fill(rawDataTable);
}
例如,在特定列中:在下面的情况中,当使用上面提到的代码读取时,数据表将显示100,将接下来的两行留空,然后显示500。
Sample Column
-------------
100
SOME TEXT
SOME MORE TEXT
500
但是,如果列恰好与下面的示例相同,则可以通过将整数读取为字符串来正常工作。
Sample Column
--------------
100
SOME TEXT
SOME MORE TEXT
500
答案
如果您正在使用OleDb文本文件驱动程序,它看起来就像您一样,您可以使用Schema.ini文件告诉它扫描文件中的所有行以确定类型。
例如,如果您的连接字符串如下所示:
Provider=Microsoft.Jet.OLEDB.4.0;Data Source=c: xtFilesFolder;
Extended Properties="text;HDR=Yes;FMT=Delimited";
然后在c: xtFilesFolder
中创建一个名为Schema.ini
的文件,如果你的文件名是myfile.csv
,那么模式文件的内容将是:
[myfile.csv]
MaxScanRows=0
就个人而言,这种方法一般不会是我解析文本文件的方式,有很多好的库可以帮助你更好地控制文本文件。
以上是关于有没有办法强制所有列成为字符串,同时从.csv文件读取数据到DataTable?的主要内容,如果未能解决你的问题,请参考以下文章
Microsoft Excel csv文件强制以UTF-8打开[重复]