java开发,excel数据导入数据库,如何在插入重复数据或则是不正确数据时候,不中断,继续执行后面的数据导入操作:报错
java开发,excel数据导入数据库,如何在插入重复数据或则是不正确数据时候,不中断,继续执行后面的数据导入,在执行结束后,生成执行结果页面(增加执行结果:成功or失败,错误原因2个列)
原功能实现
1读取excel到list
2循环list数据PreparedStatement,执行insert操作
1.定义一个StringBuffer来存放执行结果
2.循环读取excel中的数据,并做校验,并把校验结果放到StringBuffer中
3.把校验通过的数据分为一个新增的list和修改的list。如果数据大的话,每读取指定数量的数据就把两个list的数据存到数据库中。
######可以建立一个临时表,用来存储数据,数据不管是否重复直接存储。程序用来检查数据格式,不符合的全部输出到log,符合的存储进临时表。
然后在临时表里面去重复数据,检查log,修正错误数据等。最后导入。
######我的方案是这个样的:
1,解决重复数据和不正常数据问题 将从EXCEL读取的数据校验正确放入Map,Key为数据库唯一值,比如说商品编号之类,Value放实体类.
2,第二步就是循环遍历数据Insert了,如果你采用JDBC的话,就直接Insert数据是不是存在数据库中.其实如果是用框架的话,建议采用HibernateTemple.saveOrUpdateAll(Collection),查询记录已经存在,剔除该条新增.
######可以建立一个临时表,用来存储数据,数据不管是否重复直接存储。程序用来检查数据格式,不符合的全部输出到log,符合的存储进临时表。
然后在临时表里面去重复数据,检查log,修正错误数据等。最后导入。
我也是这样想的 一直读取解析excel 感觉比较慢 没有操作数据库速度快
先直接把excel的数据 全部导入到临时表,然后在检验临时表的数据,数据正确就add到正式表里面。
其实你已经把逻辑都描述出来了;
读execl数据 - 校验
if 校验结果 ok insert
else add to map(或临时表,取决于数据量)
然后将map或临时表中的数据做展现就可以了,因为这里边就是所有校验不合法的数据集合
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。