近期在往远程数据库插入大量数据的时候遇到一个小坑,但是面对千万级别的大数据来说就是大坑了
借以此文记录处理过程,以便后期再遇到方可解愁;
我插入数据的格式是以大量的"insert into" 的语句,处理前没有考虑到重复的问题导致才出现需要去重的尴尬动作.
在这里提供几个思路
一:首先是如网上所说可以直接拷贝数据库文件,但是版本和数据库类型要一致,但是数据库文件太大了,传输
到远程也挺慢,其实此方法我个人没尝试过,也觉得不是很可行;
二 在插入的语法前使用"replace into" 替换"insert into",方可解决重复记录问题;也可采取合并语句的方式方法!
三 主要还是讲解第三种方法吧,毕竟前两种还是有先决条件的,此种方法主要适用直接操作数据库,用SQL直接去重,这里采用的思
路是"去重保留最小ID值",下面贴出语法,套用即可,另附一张图解释一下
DELETE FROM `t_src_region_hour_data_2016` WHERE id NOT IN ( SELECT minid FROM ( SELECT min(id) AS minid FROM `t_src_region_hour_data_2016` t GROUP BY t.`datatime`,t.`code`) b );