2

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

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

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

数据文件如下所示:

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

要在有限的 JVM 内存中处理这个文件,应该分批处理它,并确保它只有在没有任何错误的情况下才会被持久化。感谢您在设计解决方案方面的帮助。

4

1 回答 1

1

对于大文件,您不能总是将所有内容都加载到内存中。您有时必须创建一个临时表来存储信息。

  • 阅读几行并将它们存储在列表中
  • 检查是否行,确保数据正确
  • 如果好的话,将该行存入数据库的临时表中
  • 如果是坏的,删除临时表中的数据并停止进程并报错

当文件已加载到临时表中时

  • 您是否进行全局检查(尝试在数据库中进行检查,不要在应用程序中取回所有内容)
  • 如果很好,将临时表中的数据复制到实时表中。删除临时表
  • 如果是坏的,删除临时表中的数据并停止进程并报错
于 2013-08-09T19:31:46.520 回答