我现在使用DB2
将数据从一个客户端数据库DB1
复制到主数据库SqlBulkCopy
。
DataTable dtTable = new DataTable();
sqlDB2DataAdapter.Fill(dtTable); //select * from tblOrdersDB2
SqlBulkCopy bulkcopy = new SqlBulkCopy(sqlDB1Connection)
bulkcopy.DestinationTableName = "dbo.tblOrdersDB1";
bulkcopy.WriteToServer(dtTable);
通过创建INDEX,当我将批量数据插入数据库时,不会插入所有重复值
问题是我想报告一个被忽略的所有重复记录的CSV文件
如何实现这些重复记录?有一种简单的方法吗?
谢谢。
答案 0 :(得分:2)
为什么不在初始SELECT期间过滤我们的重复记录?并且作为单独的任务选择并报告用户的重复项。 重复的东西确实是批量复制的一个单独的问题。
答案 1 :(得分:1)
这可能是一个帮助
class TableComparer : EqualityComparer<DataRow>
{
public override bool Equals(DataRow c1, DataRow c2)
{
if (c1["field1"] == c1["field1"] &&
c1["field2"] == c1["field2"])
{
return true;
}
else
{
return false;
}
}
public override int GetHashCode(DataRow c)
{
int hash = 23;
hash = hash * 37 + c["field1"].GetHashCode();
hash = hash * 37 + c["field2"].GetHashCode();
return hash;
}
}
TableComparer eqc = new TableComparer();
var newValues = tempList.Rows.Cast<DataRow>().Distinct(eqc).ToList();
SqlBulkCopy bulkcopy = new SqlBulkCopy(sqlDB1Connection)
bulkcopy.DestinationTableName = "dbo.tblOrdersDB1";
bulkcopy.WriteToServer(newValues);