springboot批量导入excel数据,入库时如何批量去重入库,数据库sqlserver

新手上路,请多包涵

没有主键的表,批量导入,使用insert into,用aaa,bbb,ccc,ddd4个字段做唯一。
image.png

阅读 3.6k
4 个回答

这种情况建议你在 java 端做好去重处理再入库,可操作性也更强。

先丢set里去重,再往表里插

先在内存中去重能保证这一次插入的数据不重. 如果需要后续插入的数据也不重, 可以用布隆过滤器

如果不想在 Java 程序中去重,可以使用 sqlserver 的 merge 语句进行操作(其实就是一个存在则更新,不存在则插入的语义)。

示例如下:

MERGE INTO Table1 T1
USING (SELECT #{item.a} AS a, #{item.b} AS b) T2
ON ( T1.a=T2.a) // 这里就是唯一值检查,但表中存在相同 a 时
WHEN MATCHED THEN
  UPDATE SET T1.b = 2
WHEN NOT MATCHED THEN 
  INSERT (a,b) VALUES('1001',2);
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题