在现有的项目中,用户可以下载报告,它有1000万条记录,这个过程从数据库中获取数据,并通过使用super csv java API写入csv,然后通过附加向用户发送电子邮件,它需要巨大的堆空间来容纳1000万个java对象并将这些记录写入csv文件,因为这个服务器正在崩溃,因为应用程序有很多这样的报告。有没有更好的办法来处理这件事?我红sxssfworkbook文档,它说指定的记录计数可以保持在内存中,剩余的记录将被推到硬盘,但这是使用创建excel文件。是否有类似的API来创建csv文件或sxssfworkbook可以用来创建csv文件。
1条答案
按热度按时间iq0todco1#
几乎没有用于阅读和写入CSV文件的Java库。它们通常支持“流”,因此它们不需要在内存中保存源数据或生成的CSV。
Apache Commons CSV库将是一个很好的起点。这是User Guide。它支持各种风格的CSV文件,包括Microsoft Excel生成的CSV格式。
然而,我建议发送一个包含1000万条记录的CVS文件(比如1GB未压缩数据)不会让你受到运行用户电子邮件服务器的人的欢迎!这种大小的文件应该通过网络或文件传输服务提供。