C# SQL Server:SqlBulkCopy导入导致主键冲突
我正试图在C#NET中设计一个基于窗口的应用程序。我正在数据网格视图中读取csv文件,然后将这些数据插入数据库。我正在使用C# SQL Server:SqlBulkCopy导入导致主键冲突,c#,sql-server,sqlbulkcopy,C#,Sql Server,Sqlbulkcopy,我正试图在C#NET中设计一个基于窗口的应用程序。我正在数据网格视图中读取csv文件,然后将这些数据插入数据库。我正在使用SqlBulkCopy将csv文件中的数据插入数据库。我关心的是,当我试图将数据插入数据库(已经包含数据)时,我得到了主键约束的错误。我想知道在使用SqlBulkCopy插入数据库之前是否可以比较值。若数据库中存在该值,则应进行更新 有人能给我提供这方面的逻辑吗 谢谢。您需要先将数据库中的数据读取到列表中。 然后,当您加载csv时,您将丢弃任何重复项 此外,在插入时,您可能应
SqlBulkCopy
将csv文件中的数据插入数据库。我关心的是,当我试图将数据插入数据库(已经包含数据)时,我得到了主键约束的错误。我想知道在使用SqlBulkCopy
插入数据库之前是否可以比较值。若数据库中存在该值,则应进行更新
有人能给我提供这方面的逻辑吗
谢谢。您需要先将数据库中的数据读取到列表中。 然后,当您加载csv时,您将丢弃任何重复项
此外,在插入时,您可能应该忽略主键,让sql数据库生成该键。您需要先将数据库中的数据读取到列表中。 然后,当您加载csv时,您将丢弃任何重复项
另外,当您插入时,您可能应该忽略主键,让sql数据库生成该键。当您通过SQLBulkCopy将数据导入时,无法执行任何逻辑操作。甚至触发器(抖动)也被关闭 您应该做的是将数据大量复制到一个空的临时表中,然后运行一个存储过程,将临时表中的数据合并到实际的非空表中
如果您使用的是SQL 2008,那么您可以使用
MERGE
命令,否则您只需通过单独的更新和插入对其进行编码。当您通过SQLBulkCopy对数据进行firehosing时,无法执行任何逻辑。甚至触发器(抖动)也被关闭
您应该做的是将数据大量复制到一个空的临时表中,然后运行一个存储过程,将临时表中的数据合并到实际的非空表中
如果您使用的是SQL 2008,那么您可以使用
MERGE
命令,否则您只需通过单独的更新和插入来对其进行编码。如果您确实知道不需要复制,只需在PK的索引上设置“Ignore dupes”选项,就可以了。如果您确实知道,如果你真的知道不需要复制品,只需在PK的索引上设置“忽略复制品”选项,你就完成了。你能给我举个简单的例子吗。@Rushabh Shah你需要更具体一点。也许在你的问题中发布你的代码会使建议如何帮助变得更容易。你能给我提供一个简单的例子吗?@Rushabh Shah你需要更具体一点。也许在问题中发布代码可以更容易地建议如何使用helptitle,因为它太笼统,不能真正反映问题内容。title太笼统,不能真正反映问题内容。是否有其他方法解决此问题。最后,我想输入新数据并更新旧数据。如果可能的话,你能给我举个简单的例子。有没有其他方法解决这个问题。最后,我想输入新数据并更新旧数据。如果可能的话,你能给我举个简单的例子吗。