近期做了数据对接的一个项目,就是从远程ftp服务器上,取csv文件,然后把csv文件里的数据录入到所做项目的数据库中,比方说我读一个csv文件,大概有近6万条数据,在录入过程中,我得查询每条记录在数据库中是否存在,如果存在并且没有什么变化,就过滤掉该条数据,如果存在,且有变化,就做更新,如果不存在,就做插入。
处理方案:计算总共有数据n条,每次处理5000条数据,然后计算出总共处理次数,再根据总处理次数,循环这5000条数据,然后连接数据库批处理这5000条数据,总共执行时间大约为10分钟左右,这种速度慢吗?有没有更好的解决方案?
java大数据处理方案:
和我所维护的系统的batch处理方式一模一样。我们系统现在是csv35万条数据,也是遇到了处理速度的瓶颈,我是ERP。上个月进行过一次简单优化。对您的问题有以下见解:①根本没必要查询数据是否存在(浪费大量时间),直接做更新,如果更新结果为0条,考虑insert,这样基本不会有什么处理时间花销。更高性能可考虑merge。②建临时表是很好的解决方案,不知你们为什么不允许,反正我们允许,效果也很好
分析: