我需要将表格导出为CSV文件并通过我的JSF / Icefaces Web应用程序进行下载。
我该怎么做?我有一个包含20多个列和超过10个MIO行的表。
目前,我使用Java Thread,将所有数据加载到ram中。然后我创建一个新文件并将Collection的行写入行迭代到文件中。如果线程完成,用户可以通过Servlet下载大文件。
但我不想把这么多GB写入ram。我无法保证安全,不会出现内存问题..
hibernate可能会为我做这件事吗?或者有人有其他想法吗?
我已连接到DB2 Datebase。我要导出的表连接到hibernate bean,但也可以编写本机sql。
感谢您的回复!
答案 0 :(得分:3)
您需要文件的中间阶段吗?您是否尝试从数据库加载并写入每行的servlet输出流?这样你只是作为客户端和数据库之间的管道。
只需恰当地设置您的content-disposition
标题,这将指示客户端的浏览器将传入的数据视为CSV文件本身。
答案 1 :(得分:1)
我也经历过类似的问题,我解决问题的方法是我最初在光盘上写一个CSV文件并从DB中获取25K批记录保存到文件中,并迭代重复该过程直到所有报告所需的数据不会写在文件中。 然后将文件URL发送到客户端以下载文件。