所有
我想将包含超过一百万条记录的大型Excel文件上传并导入到我的Java程序中。
我可以使用Apache POI轻松地将小文件导入到我的系统中,但是当我从大文件启动应用程序抛出和内存不足错误时,
我搜索了谷歌并发现了很多线程,我尝试了一切,但无法解决这个问题。
任何人都可以给我解决我的特定问题,导入时间对我来说不是问题,现在我也可以承受性能问题,
只想将此数据导入我现有的系统而不会出现oem错误。
我的系统配置非常好,java有足够的内存可供使用,因此硬件不是问题。
由于
答案 0 :(得分:0)
您需要流式传输数据,这样您就不需要立即将所有记录存储在内存中。 POI支持流式传输(请参阅XSSF and SAX event API)。当您读取数据时,将其发送到您需要的任何地方(数据库或任何地方,您没有指定) - 使用流API,您不应在处理之前将所有数据读入内存。
您还可以将数据导出为CSV文件,然后使用常规FileInputStream
来读取文件并在读取时处理每条记录。