c# – SQLBulkCopy不复制主键

使用SQLBulkCopy时,处理主键冲突错误的最佳方法是什么

Violation of PRIMARY KEY constraint 'email_k__'. Cannot insert duplicate key in object  'lntmuser.email'.

(即如果该行已存在于目标表中)?

有没有办法跳过插入重复行或是否必须事先检查和处理?

这是我目前使用的代码:

  var conPro = tx_ProConStr.Text;
  var conArc = tx_ArcConStr.Text;

  var con = new SqlConnection {ConnectionString = conPro};
  var cmd = new SqlCommand("SELECT * FROM dbo.email", con);
  con.Open();

  var rdr = cmd.ExecuteReader(); 
  var sbc = new SqlBulkCopy(conArc) {DestinationTableName = "dbo.email"};

  sbc.WriteToServer(rdr);

  sbc.Close();
  rdr.Close();
  con.Close();

解决方法:

我通常最终对临时表执行批量复制操作,然后使用常规SQL将数据从它复制到目标表.这允许我执行“批量更新”,以及处理这样的特殊情况(尽管我没有遇到过这种特殊需求).

与直接批量复制相比,性能有所提升,但它仍然比执行INSERT快得多.

上一篇:c# – SQL Server – 无法将值0或1导入位列


下一篇:c# – 无法使用SqlBulkCopy从Excel读取第一行