我正在尝试在C#.NET中设计一个基于窗口的应用程序。我正在数据网格视图中读取csv文件,然后将这些数据插入数据库。我正在使用SqlBulkCopy
将数据从csv文件插入到数据库中。我担心的是,当我试图将数据插入数据库(已经包含数据)时,我收到了主键约束的错误。我想知道在使用SqlBulkCopy
插入数据库之前是否可以比较值。如果数据库中存在值,则应该进行更新。
任何人都可以为我提供逻辑。
感谢。
答案 0 :(得分:2)
如果你真的,真的知道不需要欺骗,只需在PK的索引上设置“忽略对话”选项,你就完成了。
答案 1 :(得分:1)
您需要先将数据库中的数据读入列表。 然后,当您加载csv时,您将丢弃任何重复项。
此外,插入时应该忽略主键并让sql数据库生成密钥。
答案 2 :(得分:1)
当你通过SQLBulkCopy发送数据时,没有办法做任何逻辑。偶数触发器(颤抖)也会关闭。
您应该做的是将数据批量复制到空的临时表中,然后运行一个存储过程,将来自登台表的数据合并到真实的非空表中。
如果你正在使用SQL 2008,那么你可以使用MERGE
命令,否则你只需要通过单独的更新和插入来编写它。