Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# SQL Server:SqlBulkCopy导入导致主键冲突_C#_Sql Server_Sqlbulkcopy - Fatal编程技术网

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

C# SQL Server:SqlBulkCopy导入导致主键冲突,c#,sql-server,sqlbulkcopy,C#,Sql Server,Sqlbulkcopy,我正试图在C#NET中设计一个基于窗口的应用程序。我正在数据网格视图中读取csv文件,然后将这些数据插入数据库。我正在使用SqlBulkCopy将csv文件中的数据插入数据库。我关心的是,当我试图将数据插入数据库(已经包含数据)时,我得到了主键约束的错误。我想知道在使用SqlBulkCopy插入数据库之前是否可以比较值。若数据库中存在该值,则应进行更新 有人能给我提供这方面的逻辑吗 谢谢。您需要先将数据库中的数据读取到列表中。 然后,当您加载csv时,您将丢弃任何重复项 此外,在插入时,您可能应

我正试图在C#NET中设计一个基于窗口的应用程序。我正在数据网格视图中读取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太笼统,不能真正反映问题内容。是否有其他方法解决此问题。最后,我想输入新数据并更新旧数据。如果可能的话,你能给我举个简单的例子。有没有其他方法解决这个问题。最后,我想输入新数据并更新旧数据。如果可能的话,你能给我举个简单的例子吗。