SqlBulkCopy批量入库列名不一致的解决方法

DataTable里有一张表tableA
tableA 有三列A,C,E
目标数据库里有一张表tableB
tableB 有五列A,B,C,D,E
我现在要把tableA的A,C,E 入到 tableB的A,C,E中

foreach (DataColumn dc in dt.Columns)
{
foreach (DataColumn dc2 in desBulk.Columns)
{
if(dc.ColumnName==dc2.ColumnName)
{
desBulk.ColumnMappings.Add(dc.ColumnName, dc.ColumnName);
}
}
}

tableA和tableB的列没有对应好

/// <summary> 
/// 将DataTable中数据批量数据库表中
/// <param name="dt">源数据集</param> 
/// <param name="ExcelTitle">DataTable数据题头</param> 
/// <param name="DBColumnName">要插入数据的表的对应字段</param> 
/// <param name="DestinationTableName">写入数据的数据库表名</param> 
/// </summary> 
public static void SqlBulkCopyData(System.Data.DataTable dt, string[] DataTableTitle, string[] DBColumnName, string DestinationTableName)
{
SqlConnection conn = new SqlConnection("…………………………");
//初始化连接字符串 
if (conn.State == ConnectionState.Closed)
{
conn.Open();
}
SqlBulkCopy bcp = new SqlBulkCopy(conn);
//指定目标数据库表名
bcp.DestinationTableName = DestinationTableName;
//指定源列和目标列之间的对应关系
for (int i = 0; i < DataTableTitle.Length; i++)
{
bcp.ColumnMappings.Add(DataTableTitle[i], DBColumnName[i]);
}
//写入数据库表 
bcp.WriteToServer(dt);
bcp.Close();
conn.Close();
}

 

posted @ 2016-01-24 13:56  肥河童  阅读(377)  评论(0)    收藏  举报