有没有办法强制所有列成为字符串,同时从.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?的主要内容,如果未能解决你的问题,请参考以下文章

bash方法从csv文件中删除最后4列

Microsoft Excel csv文件强制以UTF-8打开[重复]

Google-BigQuery - CSV 文件的架构解析

有没有办法使用 read.csv 从字符串值而不是 R 中的文件读取?

有没有办法根据索引折叠几列,同时保留其他列?

有没有办法从 pandas read_csv 中“提取”dtype 转换功能?