在现有的项目中,用户可以下载报告,它有1000万条记录,这个过程使用super csv java api从数据库获取数据并写入csv,然后通过附件发送电子邮件给用户,需要巨大的堆空间来容纳1000万条记录java 对象并将这些记录写入 csv 文件,因为该服务器正在崩溃并关闭,因为应用程序有许多这样的报告。有没有更好的方法来处理这个问题?我红色 sxssfworkbook 文档,它说指定的记录计数可以保留在内存中,剩余的记录将被推送到硬盘,但这用于创建 Excel 文件。有没有类似的API来创建csv文件或者sxssfworkbook可以用来创建csv文件。?
用于读写 CSV 文件的 Java 库很少。它们通常支持“流式传输”,因此不存在需要将源数据或生成的 CSV 保存在内存中的问题。
Apache Commons CSV 库将是一个很好的起点。这是用户指南。它支持各种风格的 CSV 文件,包括 Microsoft Excel 生成的 CSV 格式。