我正在尝试将DataTable写入Server上的目标表中。DataTable dt只包含一个列,其名为Email。我的目标表包含tpid、lastname、age、date和email。这是我用于批量复制的代码:
using (SqlConnection sqlConn = new SqlConnection(sqlCs))
{
sqlConn.Open();
using (SqlBulkCopy bulkCopy = new SqlBulkCopy(sqlConn.ConnectionString, SqlBulkCopyOptions.KeepIdentity | SqlBulkCopyOptions.UseInternalTransaction))
{
bulkCopy.DestinationTableName = destinationTableName;
bulkCopy.WriteToServer(dt);
}
}我看到的是,在我的目标表中,我从DataTable中获得电子邮件的值,该值被插入到tpid列中,而不是email。我在这里没有使用列映射,但不应该批量复制匹配电子邮件与电子邮件自动?
发布于 2015-01-23 13:36:13
考虑尝试这种映射:
SqlBulkCopyColumnMapping mapMAIL = new SqlBulkCopyColumnMapping("Email", "email");
bulkCopy.ColumnMappings.Add(mapMAIL);如果需要,可以查询源表和目标表的MySQL架构,并根据字段名生成自动映射。
发布于 2015-01-23 13:51:05
不,不相配。您必须添加映射:
myBulkCopy.ColumnMappings.Add(new SqlBulkCopyColumnMapping("Email", "email"));或者源和目标以相同的顺序具有相同的列。如果需要更多的灵活性,我建议实现IDataReader并将其传递给WriteToServer方法。
https://stackoverflow.com/questions/28111022
复制相似问题