直接上代码:
import org.apache.poi.ss.usermodel.Cell; import org.apache.poi.ss.usermodel.Row; import org.apache.poi.ss.usermodel.Sheet; import org.apache.poi.xssf.streaming.SXSSFWorkbook; pubic class ExportData{ public static void export(String sql) throws Exception { Class.forName("com.mysql.jdbc.Driver"); Connection connect = DriverManager.getConnection( "jdbc:mysql://172.31.50.39:3308/test_sce_doraemon?zeroDateTimeBehavior=convertToNull&characterEncoding=utf8&autoReconnect=true&failOverReadOnly=false&useCursorFetch=true&defaultFetchSize=1000" , "root" , "123456" ); Statement statement = connect.createStatement(); ResultSet resultSet = statement .executeQuery(sql); ResultSetMetaData metaData = resultSet.getMetaData(); try { long start = System.currentTimeMillis(); SXSSFWorkbook wb = new SXSSFWorkbook(100); Sheet sh = wb.createSheet(); Row row = null; int i = 0; while ((resultSet.next())) { row = sh.createRow(i++); for (int column = 1; column <= metaData.getColumnCount(); column++) { Cell cell = row.createCell(column); if (i == 1) { cell.setCellValue(metaData.getColumnLabel(column)); } else { cell.setCellValue(resultSet.getString(metaData.getColumnLabel(column))); } } } FileOutputStream out = new FileOutputStream("/work/test.xlsx"); wb.write(out); out.close(); wb.dispose(); long end = System.currentTimeMillis(); System.out.println("cost time: " + (end - start) / 1000 + " s"); } catch (Exception e) { e.printStackTrace(); } finally { statement.close(); resultSet.close(); connect.close(); } } }
以上代码就是主要实现代码,主要是通过jdbc连接,一边读一边通过POI写excel,针对大数据导出性能非常好,亲测1000万的mysql测试数据导出70w只要30秒。
poi需要3.9以上,利用poi针对大数据优化的依赖,注意两个依赖的版本最好一致,免得出现莫名错误。
<dependency> <groupId>org.apache.poi</groupId> <artifactId>poi-ooxml</artifactId> <version>3.9</version> </dependency> <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi</artifactId> <version>3.9</version> </dependency>
问题:如果是通过Mybatis的实现,是通过动态生成,并且带参数的脚本,拿不到jdbc和具体sql怎么办?
解决:我们一般通过mybatis是通过 SqlSessionTemplate的selectList等方法来获取结果,这时候可以调用
public void select(String statement, Object parameter, ResultHandler handler) { this.sqlSessionProxy.select(statement, parameter, handler); }
重写ResultHandler的实现,里面可以会获取每条记录,我的例子:
final SXSSFWorkbook wb = new SXSSFWorkbook(100); final Sheet sh = wb.createSheet(); serviceSqlSession.select(statement , map, new ResultHandler() { @Override public void handleResult(ResultContext resultContext) { Object obj = resultContext.getResultObject(); Map map = (HashMap) obj; Iterator<Map.Entry<String, String>> entries = map.entrySet().iterator(); Row row = sh.createRow(INIT_ROW_NUM++); int j=0; while (entries.hasNext()) { Map.Entry entry = entries.next(); Cell cell = row.createCell(j++); if (INIT_ROW_NUM == 1) { cell.setCellValue(entry.getKey().toString()); } else { cell.setCellValue((String)entry.getValue().toString()); } } } }); FileOutputStream out = new FileOutputStream(filePath); wb.write(out); out.close(); wb.dispose(); INIT_ROW_NUM =0;
相关推荐
有时,我们需要将Oracle数据库中的数据导出到Excel文件,以便进行进一步的处理或分析。本文将详细介绍如何利用Java编程语言,结合JXL库来实现这一过程,特别是处理BLOB类型的文件。 首先,理解BLOB类型。BLOB...
标题中的“java 大数据导出csv小工具”指的是一个基于Java编程语言开发的应用程序,其主要功能是将大量数据转换并导出为CSV(逗号分隔值)格式的文件。CSV是一种通用的文件格式,广泛用于数据交换,因为它可以被...
这可能涉及到数据库的分页查询,然后逐页导出到Excel。在Java中,这可以通过JDBC或者ORM框架如Hibernate、MyBatis来实现。 3. **数据处理**:在导出前,可能需要对数据进行预处理,比如格式转换、计算、过滤等。这...
web项目中需要有将数据导出excel的操作需求 使用html格式导出方法,但在导出时,根据最大行数重新建立新的excel文件; 数据从数据库取出使用纯jdbc方式读数据,边读边向文件中写; 待所有数据写完,将各个小excel...
本项目是关于如何利用EasyExcel与MySQL数据库配合,实现数据的导出生成Excel文件,以及将Excel中的数据保存到数据库的操作。 首先,EasyExcel是阿里巴巴开源的一款轻量级的Java处理Excel工具,它支持读取和写入...
在Java开发中,处理大数据时常常面临内存溢出的问题,尤其是在需要将大量数据库数据导出到文件,如...通过上述策略,可以更有效地处理大数据导出,避免Java应用因内存溢出而崩溃,同时提高数据处理的效率和稳定性。
通过以上分析,我们可以了解到这个资源主要涉及了使用Java和Apache POI处理xlsx文件,特别是大数据批量导出的场景,同时还提供了数据库连接的支持。开发者可以根据具体需求,结合`ExportExcels.java`中的示例代码和...
在导出大量数据到文件,如Excel或CSV格式时,需要采取特定策略以优化内存使用。以下是一些关键知识点和最佳实践: 1. **数据库分页**: 对于大规模数据导出,通常采用分页查询来减少一次性加载的数据量。Oracle...
在IT行业中,数据管理和操作是至关重要的任务,尤其是在大数据时代,高效的数据导入和导出工具是必不可少的。这里我们关注的是一个特定的Java项目——"导入Excel到MySQL通用工具",它提供了一种方法来将Excel文件...
在Java环境中,我们可以使用Apache POI库来处理Excel文件,或者使用JDBC连接数据库进行数据导出。例如: ```java import org.apache.poi.ss.usermodel.WorkbookFactory; import java.sql.Connection; import java....
数据分页导入Excel是一项在大数据处理中常见的任务,它涉及到如何高效地从数据库中提取大量数据并将其组织成Excel格式。在这个过程中,我们通常会利用Java的Apache POI库,这是一个强大的工具,允许开发者创建、修改...
4. **数据导入导出**:用户可以方便地将Excel数据导入Oracle,或者将数据库中的数据导出到Excel,进行进一步的分析和处理。 5. **数据可视化**:通过插件,用户可能还能创建图表和图形,以直观地展示从Oracle获取的...
- 使用API:通过编程语言(如Python的pandas库,Java的JDBC API)读取Excel文件,然后逐条插入或批量插入到数据库中。 - 数据转换工具:如ETL(提取、转换、加载)工具,如Alteryx、Pentaho或Informatica,可自动...
在IT行业中,数据管理是一项关键任务,特别是在大数据时代,数据的导入、导出与整合是日常操作的一部分。本文将详细讲解如何将Excel数据导入到Oracle数据库中,以及在这个过程中涉及的关键技术点。 首先,Excel是一...
- 教师信息导出Excel:支持将教师信息导出为Excel格式,方便进行数据分析或备份。 - 教师工资管理:涵盖工资计算、发放记录和调整等功能,确保工资计算的公正透明。 - 工资统计:自动生成工资报表,包括月度、...
9. 利用中间文件:在处理大数据时,可以将数据写入临时文件,然后进行批量处理,避免一次性加载大量数据到内存。 总之,处理大数据的关键在于合理地利用资源,通过分解、压缩、并行化、游标管理等方式优化内存使用...
在数据挖掘和大数据分析中,POI 提供了方便的方式来读取、写入和修改 Excel 数据,这在从数据库导出数据到 Excel 表格时非常有用。 在本文中,我们将探讨如何使用 POI 设置 Excel 单元格格式为文本,并从数据库生成...
`readtable`和`readmatrix`是常用的两个工具,用于导入CSV、Excel等格式的数据。`readtable`适用于带有结构信息的数据,如列名和数据类型,而`readmatrix`则简化为只读取数值,适用于纯数值型数据。对于非常大的文件...
此外,将数据库数据导出到Excel是一种常见的需求,这在数据分析和报告生成时尤其有用。多数编程语言都有库或模块支持这种功能,比如Python的pandas库可以方便地将数据写入Excel格式。导出数据后,开发者可以利用...
4. **数据流处理**:为了处理大数据,POI提供了SXSSF(Streaming Usermodel API),它可以在内存有限的情况下处理大型Excel文件,通过写入磁盘进行临时存储。 5. **公式处理**:POI能够解析和计算Excel中的公式,这...