我正在尝试用C#.NET设计一个基于窗口的应用程序。我正在读取数据网格视图中的csv文件,然后将这些数据插入到数据库中。我使用SqlBulkCopy
将数据从csv文件插入到数据库中。我担心的是,当我试图将数据插入数据库(已经包含数据)时,我得到了主键约束的错误。我想知道在使用SqlBulkCopy
插入数据库之前是否可以比较值。如果数据库中存在值,则应进行更新。
有谁能给我提供这方面的逻辑。
谢谢。
发布于 2011-03-13 06:32:11
如果你真的,真的知道不需要被复制,只需在PK的索引上设置“忽略被复制”选项,你就完成了。
发布于 2011-03-12 21:00:42
您需要首先将数据从数据库读取到列表中。然后,当您加载csv时,您将丢弃所有重复项。
此外,当您插入时,您可能会忽略主键,并让sql数据库生成键。
发布于 2011-03-12 22:54:09
当你通过SQLBulkCopy注入数据时,没有办法做任何逻辑。甚至连触发器(抖动)都被关闭。
您应该做的是将数据批量复制到一个空的临时表中,然后运行一个存储过程,将临时表中的数据合并到实际的非空表中。
如果您使用的是SQL2008,那么您可以使用MERGE
命令,否则您只能使用单独的update和insert对其进行编码。
https://stackoverflow.com/questions/5285445
复制相似问题