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

午吃好任务 发布于 2013/04/15 10:56
阅读 3K+
收藏 2

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

原功能实现

1读取excel到list

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

加载中
0
amonxu
amonxu

1.定义一个StringBuffer来存放执行结果

2.循环读取excel中的数据,并做校验,并把校验结果放到StringBuffer中

3.把校验通过的数据分为一个新增的list和修改的list。如果数据大的话,每读取指定数量的数据就把两个list的数据存到数据库中。

0
俏文安
俏文安

    可以建立一个临时表,用来存储数据,数据不管是否重复直接存储。程序用来检查数据格式,不符合的全部输出到log,符合的存储进临时表。

    然后在临时表里面去重复数据,检查log,修正错误数据等。最后导入。

0
R-Lu
R-Lu

我的方案是这个样的:

1,解决重复数据和不正常数据问题 将从EXCEL读取的数据校验正确放入Map,Key为数据库唯一值,比如说商品编号之类,Value放实体类.

2,第二步就是循环遍历数据Insert了,如果你采用JDBC的话,就直接Insert数据是不是存在数据库中.其实如果是用框架的话,建议采用HibernateTemple.saveOrUpdateAll(Collection),查询记录已经存在,剔除该条新增.

0
大喵哥
大喵哥

引用来自“天兵仔”的答案

    可以建立一个临时表,用来存储数据,数据不管是否重复直接存储。程序用来检查数据格式,不符合的全部输出到log,符合的存储进临时表。

    然后在临时表里面去重复数据,检查log,修正错误数据等。最后导入。

我也是这样想的  一直读取解析excel 感觉比较慢  没有操作数据库速度快

先直接把excel的数据 全部导入到临时表,然后在检验临时表的数据,数据正确就add到正式表里面。

0
恺哥
恺哥

其实你已经把逻辑都描述出来了;

读execl数据 - 校验

if 校验结果 ok insert

else add to map(或临时表,取决于数据量)

然后将map或临时表中的数据做展现就可以了,因为这里边就是所有校验不合法的数据集合

返回顶部
顶部