【发布时间】:2014-03-28 06:23:14
【问题描述】:
下面的代码给了我一个参数异常,说源列“e_partnerid”,它显然在 csv 中,不存在。我感觉分隔符设置不正确或类似的东西,我尝试稍微更改连接字符串,但仍然遇到相同的错误。
static DataTable GetDataTableFromCsv(string path, string csvSelection, bool isFirstRowHeader)
{
string header = isFirstRowHeader ? "Yes" : "No";
string pathOnly = Path.GetDirectoryName(path);
string fileName = Path.GetFileName(path);
//string sql = @"SELECT " + csvSelection + " FROM [" + fileName + "];";
string sql = @"SELECT " + "*" + " FROM [" + fileName + "];";
using (OleDbConnection connection = new OleDbConnection(@"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + pathOnly + ";Extended Properties=\"Text;HDR=" + header + ";FMT=Delimited(;)\""))
using (OleDbCommand command = new OleDbCommand(sql, connection))
using (OleDbDataAdapter adapter = new OleDbDataAdapter(command))
{
DataTable dataTable = new DataTable();
dataTable.Locale = CultureInfo.CurrentCulture;
adapter.Fill(dataTable);
return dataTable;
}
}
我用 ;作为 csv 内部的分隔符,甚至将其设置在 connstring 中,但仍然是相同的例外。
【问题讨论】:
-
显然我需要一个 schema.ini,其中包含有关 csv 内列的信息。我需要声明 Format 等.. 我将编写一个通用的方法,然后将结果返回给你们。
标签: csv sqlbulkcopy columnmappings