C# OLDB读取CSV文件,但会更改值
我有一个OLDB连接,可以将csv文件读入数据集。现在在CSV中,我有一个类似3,00或15,00的列(这是一个欧元金额),但当我调用OdbcDataAdapter的.Fill方法时,它会将值更改为DateTime。这是我用来读取CSV并将其转换为数据集的代码:C# OLDB读取CSV文件,但会更改值,c#,sql,database,sql-server-2008,dataset,C#,Sql,Database,Sql Server 2008,Dataset,我有一个OLDB连接,可以将csv文件读入数据集。现在在CSV中,我有一个类似3,00或15,00的列(这是一个欧元金额),但当我调用OdbcDataAdapter的.Fill方法时,它会将值更改为DateTime。这是我用来读取CSV并将其转换为数据集的代码: DataSet ds = new DataSet(); try { // Creates and opens an ODBC connection
DataSet ds = new DataSet();
try
{
// Creates and opens an ODBC connection
string strConnString = "Driver={Microsoft Text Driver (*.txt; *.csv)};Dbq=" + filePath.Trim() + ";Extensions=asc,csv,tab,txt;Persist Security Info=False";
string sql_select;
OdbcConnection conn;
conn = new OdbcConnection(strConnString.Trim());
conn.Open();
//Creates the select command text
sql_select = "select * from [" + this.fileName.Trim() + "]";
//Creates the data adapter
OdbcDataAdapter obj_oledb_da = new OdbcDataAdapter(sql_select, conn);
//Fills dataset with the records from CSV file
obj_oledb_da.Fill(ds, "csv");
//closes the connection
conn.Close();
}
catch (Exception e) //Error
{
MessageBox.Show(e.Message, "Error - LoadCSV", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
return ds;
CSV的记录如下所示:
2005 2 20 7024 0 0 2900 14 19 0,00 3,00 3,00 0,00 0,00 0,00 15,80 18,80 0,00 0,00 90014 99999998 99999998 0 0 23/02/2005 0 stt 7024 15,80 0,00 N 60376940043 fis
2005 2 20 7024 0 0 2900 14 19 30-12-1899 0:00:00 30-12-1899 15:26:00 30-12-1899 15:26:00 30-12-1899 0:00:00 30-12-1899 0:00:00 30-12-1899 0:00:00 80,33 95,59 30-12-1899 0:00:00 30-12-1899 0:00:00 92705 99999998 99999998 0 0 23-2-2005 0:00:00 0 stt 7024 80,33 30-12-1899 0:00:00 N fis
从数据集接收的记录如下所示:
2005 2 20 7024 0 0 2900 14 19 0,00 3,00 3,00 0,00 0,00 0,00 15,80 18,80 0,00 0,00 90014 99999998 99999998 0 0 23/02/2005 0 stt 7024 15,80 0,00 N 60376940043 fis
2005 2 20 7024 0 0 2900 14 19 30-12-1899 0:00:00 30-12-1899 15:26:00 30-12-1899 15:26:00 30-12-1899 0:00:00 30-12-1899 0:00:00 30-12-1899 0:00:00 80,33 95,59 30-12-1899 0:00:00 30-12-1899 0:00:00 92705 99999998 99999998 0 0 23-2-2005 0:00:00 0 stt 7024 80,33 30-12-1899 0:00:00 N fis
我错过了什么?因为数据集的记录应该与CSV记录完全相同。我需要将CSV转换为数据集,因为我不想将每个单独的行添加到数据库中,所以我立即将数据集插入数据库(这是一个导入模块)
谁能帮我做这个
提前谢谢如果你真的想使用文本驱动程序导入记录,你可以考虑使用StudioIi文件。我认为它会根据控制面板中的区域设置导入日期时间: 此链接已从此页面链接到:
您还应该考虑手动解析文件,这将使您对如何解释日期字段有更多的控制。
我遗漏了什么东西——您的文件是逗号分隔的还是制表符分隔的?它是以逗号分隔的文件,小数点是逗号吗?这可能会引起一些问题。你能在文件中公布行的确切格式吗?也许你需要用
替换代码中的逗号,现在它被解释为时间。这是我的拙见。对不起,我没有提到,但它是分开的。。。可以在代码中快速地将“.”替换为“.”,或者我必须用记事本++或其他东西替换它吗?什么是“OLDB”?你是说ODBC吗?首先谢谢你的回答。手动解析文件需要很多时间。我现在在10秒内导入170k条记录。如果我手动操作,它需要超过10分钟,这对我们的客户来说太长了…谢谢!!!在添加schema.ini之后,我没有将列添加到schema.ini中,而是调整了字段类型,这就像一个符咒。。。