如何把Excel大批量数据去重后准确而快速地导入MySQL?

新手上路,请多包涵

问题描述

客户表users有中如下字段:

clipboard.png

  • 有5个销售组,每个销售组每个月至少导入一批10万条左右的数据到表中,且只能导入自己销售组的数据
  • 同一个销售组内,状态正常的客户(state=0或1)的手机号不可重复,重复的舍弃
  • 不同销售组间,客户手机号可以重复
  • 每个销售组正常客户数预估在一千万内

要求准确而快速的导入到users表中

自己尝试过的方法及问题

  • 目前是把users表中的数据按销售组ID同步到redis中,用set集合保存手机号
SADD users:1 13100010001 13100010002 13100010003
SADD users:2 13100020001 13100020002 13100020003
SADD users:3 13100030001 13100030002 13100030003
  • 导入时,先把excel表数据按文件ID(这里假设为8)写入redis,得到set集合mobiles:8
  • 再与销售组原始数据set集合users:1做差集,得到差集diff:1
  • 最后把差集写入mysql
SADD mobiles:8 13100010001 13100010004
SDIFFSTORE diff:1 mobiles:8 users:1

问题】 管理端有好几处地方能增删改users表,加上未知原因,导致mysql与redis两边数据不一致

你期待的结果是什么?

有无更好的方法,把数据准确而快速地导入到mysql中?

阅读 3.5k
3 个回答

其实问题主要是redis和mysql数据会出现不一致。如果可以保证一致的话,现在的办法也是可行的。

如果没办法保证,则只能使用mysql验证手机号是否存在。

gid和mobile 唯一索引,然后读取excel表,直接分批insert 表

新手上路,请多包涵

可以写个程序同步MySQL跟redis ,利用crontab与定期执行同步

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题