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

Posted

技术标签:

【中文标题】在 Spring Boot 中将数百万条记录从 postgresql 导出到 excel 中【英文标题】:Export millions records into excel from postgresql in spring boot 【发布时间】:2020-09-23 19:46:45 【问题描述】:

我正在使用 Apache poi jar 并使用 SXSSFWorkbook 接口将百万条记录导出到 spring boot java 中的 excel 中。此外,我正在使用 jdbc 模板(fetchSize)和 rowcallbackhandler 以块的形式从数据库(postgresql)中获取记录,但是看起来记录仍在一次从 db 中获取。请建议,下面是我用来从数据库中获取的代码

   jdbcTemplate.setFetchSize(1000);
   jdbcTemplate.query("select * from tbl",new 
                                     RowCallBackHandler(ResultSet rs)
                                           // Create row in excel and write data
                                      
                                   );

【问题讨论】:

【参考方案1】:

在我使用的类似 java 代码中,我必须设置

setAutoCommit(假);

在连接中,获取正常工作。

       conn1 = DriverManager.getConnection(dbURL, dbUser, dbPass);
       conn1.setAutoCommit(false); 
       ...
        pstatement1 = conn1.prepareStatement(sqlsel);
        pstatement1.setString(1, sistema);
        pstatement1.setInt(2, id);
        pstatement1.setFetchSize(100);

祝你好运! 如果这不能解决问题,请在您的问题中添加 JAVA 版本信息以及驱动程序版本。

【讨论】:

以上是关于在 Spring Boot 中将数百万条记录从 postgresql 导出到 excel 中的主要内容,如果未能解决你的问题,请参考以下文章

将数百万条记录从平面文件插入 SQL Server 的陷阱是啥?

从固定宽度的平面文件获取数百万条记录到 SQL 2000

如何从 db2 表中删除数百万条记录

使用 Java Streams 和 Spring Boot 的 RESTful Web 服务

数百万条记录的增量更新,索引与连接

Rownum 或 Fetch/offset 适合选择和处理数百万条记录