`

海量数据导出处理

 
阅读更多

现阶段问题:

1.会员批量数据导出有15000条数据大小限制,不设置限制时,如果有大量数据导出会导致服务器内存溢出。

2.现阶段使用的POI的User API (HSSF and XSSF), 这种方式数据全部都在内存中处理,严重消耗内存。

 

java.lang.OutOfMemoryError: Java heap space

at java.util.HashMap.resize(HashMap.java:704)
at java.util.HashMap.putVal(HashMap.java:663)
at java.util.HashMap.put(HashMap.java:612)
at org.apache.poi.xssf.model.SharedStringsTable.addEntry(SharedStringsTable.java:192)
at org.apache.poi.xssf.usermodel.XSSFCell.setCellValue(XSSFCell.java:453)
at org.apache.poi.xssf.usermodel.XSSFCell.setCellValue(XSSFCell.java:417)

 

 

处理方案:

从POI 3.8版本开始,提供了一种基于XSSF的低内存占用的API----SXSSFWorkbook, 使用POI流梳理方式进行海量数据导出。

流式XSSFWorkbook允许写入非常大的文件而不会耗尽内存,因为任何时候只有可配置的行部分被保存在内存中。

 

SXSSFWorkbook wb = new SXSSFWorkbook(1000);

参考官方说明文档:

http://poi.apache.org/components/spreadsheet/how-to.html#sxssf



 

 

实际测试结果:


 
  • 大小: 364.7 KB
  • 大小: 299.8 KB
分享到:
评论

相关推荐

    海量数据导入与导出MATLAB的有效方法.pdf

    本文主要介绍了将海量数据快速、准确地导入和导出MATLAB系统的方法,这些方法克服了过去在命令窗口直接键入原始数据进行处理的多个问题,保证了统计分析结果的准确性和加速了MATLAB在统计分析领域的应用。...

    批量导出CVS-千万级数据处理

    在IT行业中,大数据处理是一项关键任务,特别是在需要将大量数据导出为可读格式时。本文将深入探讨如何使用POI和JXL框架批量导出CSV文件,处理千万级的数据,同时避免内存溢出的问题。 首先,让我们了解CSV(Comma ...

    hadoop海量数据处理详解与项目实战

    由于给定的文件内容部分涉及到PDF电子书的提供信息,并非技术知识点,故这部分内容将被忽略,重点将放在标题与描述所提到的Hadoop海量数据处理技术上。 Hadoop是一个由Apache软件基金会开发的开源框架,旨在支持...

    基于OPENDATASOURCE函数的SQL Server数据库海量数据的快速导入导出方法

    在SQL Server中,处理海量数据是一项挑战,尤其是在需要频繁导入导出的情况下。为了高效地管理大量数据,SQL Server提供了一种灵活的工具——OPENDATASOURCE函数,它允许我们直接从外部源读取数据,从而实现快速的...

    海量数据导入与导出MATLAB

    ### 海量数据导入与导出MATLAB的有效方法 #### 摘要 本文结合具体实例,探讨了几种将大量统计数据高效、精确地导入与导出MATLAB系统的方法。通过这些方法,有效地解决了过去直接在MATLAB编程窗口键入原始数据进行...

    java实现csv导出千万级数据实例

    在IT行业中,处理大量数据是常见的挑战之一,尤其是在数据导出方面。本实例聚焦于“java实现csv导出千万级数据实例”,旨在提供一个高效、稳定的解决方案,避免因数据量过大而导致的性能问题,如Java中的栈溢出...

    VB6 ListView处理海量数据

    当需要处理海量数据时,直接将所有数据一次性加载到ListView可能会导致应用程序性能下降,甚至崩溃。为了解决这个问题,我们可以采用虚拟化技术,即Virtual Mode。 Virtual Mode是ListView控件的一个高级特性,允许...

    java csv大数据量导出(千万级别,不会内存溢出)

    在Java开发中,处理大数据量的数据导出是一个常见的挑战,特别是在CSV格式的文件处理上。CSV(Comma Separated Values)是一种广泛使用的数据交换格式,因其简单性和通用性而受到青睐。然而,当数据量达到千万级别时...

    多线程以JDBC的方式返回海量数据

    当我们需要处理海量数据时,结合这两者可以显著提升程序的效率和响应速度。本篇将深入探讨如何利用多线程和JDBC来高效地返回大数据。 首先,让我们了解什么是JDBC。JDBC是Java平台的标准API,它允许Java程序与各种...

    csv导出大量数据

    对于海量数据,可以采用分块导出,每次只处理一部分数据,减少内存占用。Python的`pandas`库提供了`chunksize`参数实现分块读写。另外,使用流式处理技术,数据无需一次性加载到内存,可提高效率。 6. CSV压缩 为了...

    海量千万级Excel导出源码-自动分sheet

    XML导出的方式允许开发者将大数据集分解成多个小的、可管理的部分,每个部分作为一个单独的工作表,从而实现海量数据的分片导出。 "自动分sheet"功能是指当数据量达到一定阈值时,源码会智能地将数据拆分为多个工作...

    海量数据的备份和恢复

    通过对比传统数据与海量数据的备份恢复方法,我们可以看出,在处理海量数据时,不仅要考虑备份的速度和存储空间,还需要关注备份的可靠性和恢复的效率。Oracle数据库提供了强大的备份恢复工具,如RMAN,可以帮助用户...

    海量数据导入与导出MATLAB的有效方法.zip

    本教程将详细讲解如何高效地处理海量数据。 首先,了解MATLAB的数据导入函数至关重要。`readtable`和`readmatrix`是常用的两个工具,用于导入CSV、Excel等格式的数据。`readtable`适用于带有结构信息的数据,如列名...

    CSV大数据分批并压缩导出

    总的来说,CSV大数据分批并压缩导出是一种实用且高效的解决方案,特别适用于需要处理海量数据且内存资源有限的环境。它结合了分批处理的内存管理策略和压缩技术的空间优化,确保了大数据操作的可行性和性能。

    基于hadoop生态搭建的电商数据仓库,整体功能架构包含数据采集、数仓搭建、数据导出、数据可视化等.zip

    在大数据处理领域,Hadoop生态系统扮演着至关重要的角色,它为海量数据的存储、处理和分析提供了高效且可扩展的解决方案。本项目是基于Hadoop生态构建的电商数据仓库,涵盖了数据采集、数仓搭建、数据导出以及数据...

    将海量数据导入到sql中

    在IT行业中,处理和管理海量数据是日常工作中的一项重要任务,尤其是在数据库操作中。当涉及到将大量数据导入SQL服务器时,正确的方法和技术选择至关重要。本文将深入探讨如何高效地将海量数据导入到SQL中,主要关注...

    POI海量导出EXCEL所需jar包和db文件

    本资源提供了使用POI处理海量数据导出到Excel所需的jar包和数据库文件,这对于大数据处理和报告生成场景非常有用。 POI库的核心功能包括: 1. **读取Excel文件**:POI提供了HSSF(Horizontally SpreadSheet Format...

    easyExcel实现大数据导出

    总结来说,`easyExcel`是Java开发中处理大数据Excel读写的好帮手,它的内存优化策略和简洁的API使得即使面对海量数据,也能轻松应对。结合适当的处理策略,如分批写入,可以进一步提高系统的稳定性和性能。

Global site tag (gtag.js) - Google Analytics