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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了我的多线程————读取百万条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数据,写入到数据库的主要内容,如果未能解决你的问题,请参考以下文章

Sqlite3写性能优化-每秒百万条写入

java jxl 大量数据写入excel,比如上千万条

node导出百万条数据成excel文件

利用POI操作Excel实现百万数据写入

php怎么导出大量数据的Excel

在 Spring Boot 中将数百万条记录从 postgresql 导出到 excel 中