sql server 如何解决excel导入数据库时主键冲突的问题,sql命令怎么写

sql1 = string.Format("insert into bbb(ProductName,ProductRegCode,ProductNo) values('{0}','{1}','{2}')",ProductName, ProductRegCode, ProductNo);

其中ProductNo是主键,

加个保护试试,
if not exists(select 1 from bbb where ProductNo = '{2}') insert into bbb(ProductName,ProductRegCode,ProductNo) values('{0}','{1}','{2}')

完全可以把冲突的记录找出来,踢掉!!

方案1:

ALTER TABLE bbb DROP CONSTRAINT pk_name CASCADE;
/*Todo: 1.执行你的导入操作 2.处理掉冲突的的值*/
ALTER TABLE bbb ADD CONSTRAINT pk _name PRIMARY KEY(ProductNo); 

方案2:
创建临时表,不对这个字段检索,导入后处理冲突后再合并

建立临时表#temp1 插入之,然后如果是完全一样的distinct就可以过滤掉啦。然后如果主键重复其他字段不重复的话,那就可能需要自己甄别。具体方法为

 select count(ProductName),ProductNo from #temp1 group by  ProductNo having count(ProductNo)>1

然后简单粗暴地删除临时表的相同数据可以参考这里:

 declare @max integer,@id integer 
declare cur_rows cursor local for  select count(ProductName) from #temp1 group by  ProductNo having count(ProductNo)>1
open cur_rows 
fetch cur_rows into @id,@max 
while @@fetch_status=0 
begin 
select @max = @max -1 
set rowcount @max 
delete from #temp1 where ProductNo = @id 
fetch cur_rows into @id,@max 
end 
close cur_rows 
set rowcount 0 

将excel整理的表结构生成insert建表sql:https://download.csdn.net/download/gongjin28_csdn/85486975