我将文件数据读入数据集,并尝试通过映射列来使用SQL批量复制批量插入。我在数据库中的所有列名都是小写的,这是从我的代码创建的。
我不知道为什么会得到"指定的列不存在于数据库中#34;例外。虽然我看到批量复制对象中映射的所有列。请指教。
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)
{
}
}
}
答案 0 :(得分:1)
您尚未打开数据库连接。插入sbc.Open();在sbc.WriteToServer(dtInsertRows)之前;