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