写入 CSV 文件导致 JVM 崩溃

问题描述 投票:0回答:1

在现有的项目中,用户可以下载报告,它有1000万条记录,这个过程使用super csv java api从数据库获取数据并写入csv,然后通过附件发送电子邮件给用户,需要巨大的堆空间来容纳1000万条记录java 对象并将这些记录写入 csv 文件,因为该服务器正在崩溃并关闭,因为应用程序有许多这样的报告。有没有更好的方法来处理这个问题?我红色 sxssfworkbook 文档,它说指定的记录计数可以保留在内存中,剩余的记录将被推送到硬盘,但这用于创建 Excel 文件。有没有类似的API来创建csv文件或者sxssfworkbook可以用来创建csv文件。?

java csv apache-poi supercsv
1个回答
3
投票

用于读写 CSV 文件的 Java 库很少。它们通常支持“流式传输”,因此不存在需要将源数据或生成的 CSV 保存在内存中的问题。

Apache Commons CSV 库将是一个很好的起点。这是用户指南。它支持各种风格的 CSV 文件,包括 Microsoft Excel 生成的 CSV 格式。


但是,我建议发送包含 1000 万条记录(例如 1GB 未压缩数据)的 CVS 文件不会让您受到运行用户电子邮件服务器的人的欢迎!该大小的文件应通过网络或文件传输服务提供。

© www.soinside.com 2019 - 2024. All rights reserved.