Sum*_*pta 5 c# csv asp.net oledb
我有一个用于我维护的ASP.NET应用程序的CSV读取代码.这个ASP.NET网站从3年开始运行良好,使用Ole.JetDB.4.0的CSV读取代码正常运行,除了偶尔有一些超过4K-5K记录的CSV会产生问题.通常问题是随机位置[随机行]的记录错过了它的第一个字符.
CSV文件只是每行的一堆名称和地址,它们是ASNI格式.CSV是逗号分隔,数据中没有数据"逗号",现在用单引号或双引号括起字段.此外,它不经常发生,我们使用相同的代码说70K记录上传他们工作正常,但有些时间说在3年内约3-4个文件只有这个问题,我们每天上传一个文件.
对于那些需要我做的人
using (System.Data.OleDb.OleDbConnection conn = new System.Data.OleDb.OleDbConnection
("Provider=Microsoft.Jet.OLEDB.4.0;Extended Properties='text;HDR=Yes;FMT=Delimited';Data Source=" + HttpContext.Current.Server.MapPath("/System/SaleList/"))
{
string sql_select = "select * from [" + this.FileName + "]";
System.Data.OleDb.OleDbDataAdapter da = new System.Data.OleDb.OleDbDataAdapter();
da.SelectCommand = new System.Data.OleDb.OleDbCommand(sql_select, conn);
DataSet ds = new DataSet();
// Read the First line of File to know the header
string[] lines = System.IO.File.ReadAllLines(HttpContext.Current.Server.MapPath("/System/SaleList/") + FileName);
string header = "";
if (lines.Length > 0)
header = lines[0];
string[] headers = header.Split(',');
CreateSchema(headers, FileName);
da.Fill(ds, "ListData");
DataTable dt = ds.Tables["ListData"];
}
Run Code Online (Sandbox Code Playgroud)
除了提及之外,这段代码工作得很好.我削减了一些不相关的部分,因此可能无法通过复制粘贴工作.
编辑:更多信息
我尝试使用ODBC与Microsoft文本驱动程序,然后我使用ACE驱动程序与OleDB.结果与所有三个驱动器相同.
如果我交换问题记录,使用前面的行读取那些行,直到下一个问题行[如果多个行在原始文件中有问题],如果那些只是问题行,它可以正常工作.
所以从上面看起来有些东西会让人分心,但我怎么能确保它顺利工作仍然是一个小测验.
编辑2:我已将此作为错误提交给Microsoft:https://connect.microsoft.com/VisualStudio/feedback/details/811869/oledb-ace-driver-12-jet-4-0-or-odbc-text -driver-ALL-未能导读取数据正确地从- CSV文本文件
| 归档时间: |
|
| 查看次数: |
1386 次 |
| 最近记录: |