将大数据从DB导出到CSV

时间:2012-10-12 11:37:32

标签: java hibernate db2 export

我需要将表格导出为CSV文件并通过我的JSF / Icefaces Web应用程序进行下载。

我该怎么做?我有一个包含20多个列和超过10个MIO行的表。

目前,我使用Java Thread,将所有数据加载到ram中。然后我创建一个新文件并将Collection的行写入行迭代到文件中。如果线程完成,用户可以通过Servlet下载大文件。

但我不想把这么多GB写入ram。我无法保证安全,不会出现内存问题..

hibernate可能会为我做这件事吗?或者有人有其他想法吗?

我已连接到DB2 Datebase。我要导出的表连接到hibernate bean,但也可以编写本机sql。

感谢您的回复!

2 个答案:

答案 0 :(得分:3)

您需要文件的中间阶段吗?您是否尝试从数据库加载并写入每行的servlet输出流?这样你只是作为客户端和数据库之间的管道。

只需恰当地设置您的content-disposition标题,这将指示客户端的浏览器将传入的数据视为CSV文件本身。

答案 1 :(得分:1)

我也经历过类似的问题,我解决问题的方法是我最初在光盘上写一个CSV文件并从DB中获取25K批记录保存到文件中,并迭代重复该过程直到所有报告所需的数据不会写在文件中。 然后将文件URL发送到客户端以下载文件。