写入导致JVM崩溃的CSV文件

时间:2018-04-08 13:06:15

标签: java csv apache-poi supercsv

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

1 个答案:

答案 0 :(得分:1)

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

Apache Commons CSV库是一个很好的起点。这是User Guide。它支持各种各样的CSV文件,包括Microsoft Excel生成的CSV格式。

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