我有一个应用程序,该应用程序在DBF中接收带有平面表的文件,这些文件进行规范化并将其转换并插入到MySQL数据库中,文件增长到250,000至270,000条记录,现在消耗约1.5-2 Gb,我必须重复该过程,并分部分。

我检查过程中是否没有先前的记录,在HashMap中帮助我将唯一记录的键保存为不包含所有信息的问题,这里的问题是要上传文件到数据库DBF总记录数据会增加,每次导入时,事情变慢并且消耗更多的内存,轻松地在一张表中获得770,000条记录,并致电以花费更多的2,000,000

例:

DBF文件有91个字段,我的归一化数据库给出了5个主表,我必须重复5次记住DBF的过程。

没有什么可以花我大约1个小时来迁移250,000条记录的所有DBF文件。

除非RAM消耗较低并且我得到几个Exception in thread "main" java.lang.OutOfMemoryError: Java heap space,如何才能最大程度地减少时间和RAM消耗



DBF文件结构具有许多冗余数据,如下所示(列):


调查代码
总体调查数据
枚举内的分组数据
人员的详细信息


例:

| survey_code | survey_columns | group_survey    | more_data | person_details |
|:------------|:---------------|:----------------|:----------|:---------------|
| 1           | ...            | 1               | ...       |1-oscar         |
| 1           | ...            | 1               | ...       |2-juan          |
| 1           | ...            | 2               | ...       |1-catalina      |
| 2           | ...            | 1               | ...       |7-john          |


注意:如您所见,有足够的数据冗余

MySQL数据库的结构如下:

Survery (table)
  id
  survey_data

Group_in_survey (table)
  survey_id
  group_data

Person (table)
  group_id
  person_details




对于每个表,导入过程按照表及其依赖关系定义的顺序划分,贯穿DBF文件中的所有记录。

在我提出启动数据库的请求之前,然后在将记录添加到MySQL中的数据库之前,如果存在记录,我将执行验证所需的信息加载到HashMap中。

同样,每当您向MySQL数据库添加一条将tamibén添加到HashMap的记录时,由于重复了其中一个调试过程。后者在每个过程中都完成

最佳答案

据我了解,您是将记录首先插入到HashMap中,以消除重复项,然后将它们复制到MySQL数据库中。如果是这种情况,您可以尝试使用HugeCollections库及其HugeMap而不是简单的HashMap

10-02 00:09
查看更多