现在接手一个java项目 批量导入模块,需提供jsp页面上excel导入功能 求设计
现在接手一个批量导入模块,需提供jsp页面上excel导入excel中数据需做有效性校验(数据格式),重复校验,重复个数校验等四五种校验,校验时的关联查询表有两个,视图一...
现在接手一个批量导入模块,需提供jsp页面上excel导入
excel中数据需做有效性校验(数据格式),重复校验,重复个数校验等四五种校验,校验时的关联查询表有两个,视图一个,数据量都为亿级,
向数据库插入数据时部分字段为excel中数据,部分为页面传至后台数据,导入完毕后返回页面需显示导入数据条数,成功条数,失败条数,并给出失败记录下载链接,供用户导出
已确定excel中数据量为10万以下,
我现在的做法是在java代码中逐条校验,然后将校验成功的数据根据校验结果插入数据库中不同的表,校验失败的数据及失败原因等插入失败记录表,
现在我导入6000条数据时就需要4分钟左右,严重影响效率
现在我的思路有两个:
一个是读excel后后台起多线程来校验数据格式并批量插入excel中数据至临时表,完毕后再来做联合查询查出无效数据条数,并再起多个线程来分别将有效的数据导入对应的表,无效的数据导入失败记录表
第二种是在后台将excel文件转为csv格式并生成sqlloader控制文件,然后调用Sqlldr 命令将数据全导入临时表,然后再起多线程来做数据的校验工作及导入工作
系统平台为linux 服务器为jboss
页面等待时间必须控制在一分钟以内,最好在20秒内能完成,不知哪种方法更有可行性,或者有牛人能提出更好的方案就万分感谢了
第二种方法我只是在网上看到这方面的资料,从没用过,不知可行性如何 展开
excel中数据需做有效性校验(数据格式),重复校验,重复个数校验等四五种校验,校验时的关联查询表有两个,视图一个,数据量都为亿级,
向数据库插入数据时部分字段为excel中数据,部分为页面传至后台数据,导入完毕后返回页面需显示导入数据条数,成功条数,失败条数,并给出失败记录下载链接,供用户导出
已确定excel中数据量为10万以下,
我现在的做法是在java代码中逐条校验,然后将校验成功的数据根据校验结果插入数据库中不同的表,校验失败的数据及失败原因等插入失败记录表,
现在我导入6000条数据时就需要4分钟左右,严重影响效率
现在我的思路有两个:
一个是读excel后后台起多线程来校验数据格式并批量插入excel中数据至临时表,完毕后再来做联合查询查出无效数据条数,并再起多个线程来分别将有效的数据导入对应的表,无效的数据导入失败记录表
第二种是在后台将excel文件转为csv格式并生成sqlloader控制文件,然后调用Sqlldr 命令将数据全导入临时表,然后再起多线程来做数据的校验工作及导入工作
系统平台为linux 服务器为jboss
页面等待时间必须控制在一分钟以内,最好在20秒内能完成,不知哪种方法更有可行性,或者有牛人能提出更好的方案就万分感谢了
第二种方法我只是在网上看到这方面的资料,从没用过,不知可行性如何 展开
3个回答
展开全部
觉得,要彻底解决问题,还要从“10万行的Excel”下手,为何会有这么大的文件、如果是人手录入为何不能用网页录入、如果从DB导出为何不直接做接口、………………
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
如果只有20秒,上载文件都不够吧。建议通过异步处理。就是接受用户上传的文件,通过后台排队处理,处理完成后,邮件发还给用户。
其它优化:
1、校验,插入等代码也尽可能优化。一次性插入后,在库表中进行比对。
2、关联表索引正确,有效。
3、逐条检验数据增加磁盘I/O,建议批量比对处理。
4、比对长字符串效率极低,尽量避免。
其它优化:
1、校验,插入等代码也尽可能优化。一次性插入后,在库表中进行比对。
2、关联表索引正确,有效。
3、逐条检验数据增加磁盘I/O,建议批量比对处理。
4、比对长字符串效率极低,尽量避免。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询