2

我将文件数据读入数据集,并尝试通过映射列使用 SQL 批量复制进行批量插入。我在数据库中的所有列名都是从我的代码创建的小写字母。

我不确定为什么会出现“数据库中不存在指定的列”异常。虽然我看到了大容量复制对象中映射的所有列。请指教。

public static void BatchBulkCopy(DataTable dataTable, string DestinationTbl,  List<string> columnMapping,string filename)
{         
    // Get the DataTable 
    DataTable dtInsertRows = dataTable;

    using (SqlBulkCopy sbc = new SqlBulkCopy(program.connectionStr.ToString()))
    {
        try 
        {
            foreach (DataColumn col in dataTable.Columns)
            {                   
                sbc.ColumnMappings.Add(col.ColumnName.ToLower(), col.ColumnName.ToLower());
                // Console.WriteLine("ok\n");
            }

            sbc.DestinationTableName = DestinationTbl.ToLower();
            sbc.BulkCopyTimeout = 8000;
            sbc.DestinationTableName = "["+ DestinationTbl.ToLower() + "]";
            sbc.WriteToServer(dtInsertRows);
            sbc.Close();
        }

        catch (Exception ex)
        {           

        }      
    }
}
4

1 回答 1

1

您还没有打开数据库连接。插入 sbc.Open(); 在 sbc.WriteToServer(dtInsertRows) 之前;

于 2018-04-18T18:54:28.917 回答