SQL Server:SqlBulkCopy导入导致主键冲突

时间:2011-03-12 20:57:53

标签: c# sql-server sqlbulkcopy

我正在尝试在C#.NET中设计一个基于窗口的应用程序。我正在数据网格视图中读取csv文件,然后将这些数据插入数据库。我正在使用SqlBulkCopy将数据从csv文件插入到数据库中。我担心的是,当我试图将数据插入数据库(已经包含数据)时,我收到了主键约束的错误。我想知道在使用SqlBulkCopy插入数据库之前是否可以比较值。如果数据库中存在值,则应该进行更新。

任何人都可以为我提供逻辑。

感谢。

3 个答案:

答案 0 :(得分:2)

如果你真的,真的知道不需要欺骗,只需在PK的索引上设置“忽略对话”选项,你就完成了。

答案 1 :(得分:1)

您需要先将数据库中的数据读入列表。 然后,当您加载csv时,您将丢弃任何重复项。

此外,插入时应该忽略主键并让sql数据库生成密钥。

答案 2 :(得分:1)

当你通过SQLBulkCopy发送数据时,没有办法做任何逻辑。偶数触发器(颤抖)也会关闭。

您应该做的是将数据批量复制到空的临时表中,然后运行一个存储过程,将来自登台表的数据合并到真实的非空表中。

如果你正在使用SQL 2008,那么你可以使用MERGE命令,否则你只需要通过单独的更新和插入来编写它。