开发者社区> 问答> 正文

如何在插入重复数据或则是不正确数据时候,不中断,继续执行后面的数据导入操作:报错

java开发,excel数据导入数据库,如何在插入重复数据或则是不正确数据时候,不中断,继续执行后面的数据导入操作:报错

java开发,excel数据导入数据库,如何在插入重复数据或则是不正确数据时候,不中断,继续执行后面的数据导入,在执行结束后,生成执行结果页面(增加执行结果:成功or失败,错误原因2个列)

原功能实现

1读取excel到list

2循环list数据PreparedStatement,执行insert操作

展开
收起
kun坤 2020-06-07 20:27:13 862 0
1 条回答
写回答
取消 提交回答
  • 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或临时表中的数据做展现就可以了,因为这里边就是所有校验不合法的数据集合

    2020-06-07 20:27:17
    赞同 展开评论 打赏
问答分类:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载