【问题标题】:SqlBulkCopy ColumnMapping ArgumentexceptionSqlBulkCopy ColumnMapping 参数异常
【发布时间】: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


【解决方案1】:

我需要创建一个描述列的 schema.ini:

private static void writeSchema(DataColumnCollection columns, string csvDir, string csvFileName)
    {
        FileStream fsOutput =
                 new FileStream(csvDir + "\\schema.ini",
                                     FileMode.Create, FileAccess.Write);
        StreamWriter srOutput = new StreamWriter(fsOutput);

        srOutput.WriteLine("[" + csvFileName + "]");
        int i = 1;
        foreach (DataColumn item in columns)
        {
            srOutput.WriteLine("Col" + i + "=\"" + item.ToString() + "\" Text");
            i++;
        }
        srOutput.Close();
        fsOutput.Close();
    }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-03-04
    • 2019-08-26
    • 1970-01-01
    • 1970-01-01
    • 2015-04-03
    • 1970-01-01
    • 1970-01-01
    • 2015-09-15
    相关资源
    最近更新 更多