处理大型数据文件

时间:2013-08-09 14:59:22

标签: java architecture

假设我有一个非常大的文件有数据。解析器解析它并将数据保存在以下类中:

Class Data{
  DataHeader header;
  List<DataLine> lines;
  ... 
}

在将数据保存在数据库中之前,我会对其进行一些验证和处理。只有在没有错误的情况下我才会坚持下去。

数据文件如下:

DATAHEADER|.......
DATALINE|1|....
DATALINE|2|....
... and so on

要在有限的JVM内存中处理此文件,应该批量处理它,并确保只有在没有任何错误时才会保留它。感谢您在设计解决方案方面的帮助。

1 个答案:

答案 0 :(得分:1)

对于大文件,您无法始终将所有内容加载到内存中。您有时必须创建临时表来存储信息。

  • 阅读几行并将其存储在列表中
  • 检查行是否正确,确保数据正确
  • 如果好,请将该行存储在数据库的临时表中
  • 如果不好,请删除临时表中的数据并使用错误停止该过程

在临时表中加载文件

  • 你进行全局检查(尝试在数据库中执行它们,不要在应用程序中取回所有内容)
  • 如果好,请将临时表中的数据复制到实时表中。删除临时表
  • 如果不好,请删除临时表中的数据并使用错误停止该过程