码迷,mamicode.com
首页 > 数据库 > 详细

我的多线程————读取百万条Excel数据,写入到数据库

时间:2018-03-28 16:48:16      阅读:244      评论:0      收藏:0      [点我收藏+]

标签:多线程   读取Excel   写入到数据库   

问题:如何高效的读取百万条Excel数据到数据库?

问题拆解:1.如何读取百万条Excel数据?poi用户模式会出现内存溢出啊

               2.读取到的Excel数据存储在哪里?100万条数据放在内存不是一件很恐怖的事情吗?

               3.如何高效的将数据写入到数据库?多线程如何使用?

方案1:poi的命令触发模式解决读取的时候内存溢出问题、读取到的数据放到内存中、内存中通过forkjoin工具任务拆解,加入到队列

深入思考:1》每次都要等待读取完数据,才能进行其他操作,读取本身就花费了9秒时间 2》100万条数据很消耗内存啊 

方案2:分2个线程:线程A和线程B,线程A负责读取Excel数据,线程B负责写入到数据库,线程A和线程B如何配合工作呢?多线程的生产消费者模式

最终核心代码附上:

poi工具类代码:

技术分享图片


读请求使用的是poi的命令模式,读取只负责向list中添加数据,无上限

技术分享图片生产消费模式的核心代码



技术分享图片

使用线程的工厂模式,将写请求加入到队列


技术分享图片

队列中,不断拿取写请求,执行


技术分享图片

写请求最终的执行方法



温馨提示:数据库的操作可以使用批处理


我的多线程————读取百万条Excel数据,写入到数据库

标签:多线程   读取Excel   写入到数据库   

原文地址:http://blog.51cto.com/13496382/2092048

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!