日期:2014-05-20  浏览次数:20621 次

关于 EXCEL 大量数据库导入 求方案
关于 EXCEL 大量数据库导入 求方案

  数据库是mysql

  业务说明:

  客户 每月 都有 大量数据库导入(EXCEL导入),导入的数据可能有重复,并且这些数据都需要进行判断操作。

  每次导入的数据量有1-2w条。 

  因为中间存在着数据判断的过程,不是单纯的导入数据插入到数据库中。

  现在代码写完之后,发现效率非常慢,1-2w条数据 需要10分钟左右才能完全导入。

  代码部分 
   
  大致流程: 先查数据库 将对应信息一次性取出 存入HASHMAP 中,然后通过hashmap 与导入的数据做比较。
  如果不存在 HASHMAP中增加该记录的某个字段,再将新的数据存入一个集合,到最后 集合批量保存。
   
  本人已经做到尽可能不查数据库,不插入数据,数据操作的过程也尽量减少,但效率还是不高。。
   
  求各位高手指点。 万分感谢!!


------解决方案--------------------
你要先测出来,主要消耗时间在哪。

真的减少与数据库交互的次数就能提高效率吗?(我个人有怀疑)。

你可以重写hashCode方法,自己写一个更好的hash函数。

应该能提高你HashMap的效率。

还有一个比较直接的办法,你也可以用JNI

但是,我感觉。还是你处理的问题。

我个人觉得,数据库对数据检索,有很多的优化。

你真的减少交互就能提高效率吗?
------解决方案--------------------
逐个找可以优化的地方。
在而且,每月一次,慢点何妨,你懂得
------解决方案--------------------
你的流程有问题,建议:
1、先把所有数据导入到数据库的临时表中,
2、通过比较确定哪些需要插入,哪些不需要插入
3、根据条件选择需要插入的数据插入正式表。

关键是怎么判断哪些需要导入,一般总有个业务主键吧,这样插入和判断就很简单、很快了......
------解决方案--------------------
在数据库中操作比较,会比你在内存中比较快n多倍的........
------解决方案--------------------
这个得具体分析你可以逐个打印每一项完成时间 看看时间消耗在哪了