java使用POI大数据量批量导出

1.问题背景

  设计到几十张数据库表,每张表有几万到十几万数据不等,现在需要尽可能快的导出excel数据。

2.遇到的问题及解决思路

  2.1 数据量大,生成速度慢。下载的文件太大。

     使用多线程下载,一个表的数据分配一条线程,全部下载完成压缩成一个zip文件。

    2.2 单表数据过多超过excel的条数据限制 

        当一个表的数据超过限制,使用csv文件的方式保存。

  2.3 数据量大时,生成Excel数据和导出比nginx的默认响应时间(60s)长,导致接口请求超时。

      当数据量大时,poi的excel生成和下载超过60s难以避免。但我们不能轻易去修改nginx的响应时间。我把生成数据文件和下载分为两个接口,

    消耗的时间主要是在生产数据文件的接口上,这里我生成数据的接口先是直接响应并给出文件名,然后开启另外的线程去生成文件,绕过nginx的

    超时时间,前端拿到文件名,定时10s去调用判断文件是否存在的接口,存在就去下载文件。

 

posted on 2020-11-10 19:54  又在桃花换酒钱  阅读(1482)  评论(0编辑  收藏  举报