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

问题描述

客户表users有中如下字段:

https://img4.mukewang.com/5c8370410001e00b04140136.jpg

  • 有5个销售组,每个销售组每个月至少导入一批10万条左右的数据到表中,且只能导入自己销售组的数据

  • 同一个销售组内,状态正常的客户(state=0或1)的手机号不可重复,重复的舍弃

  • 不同销售组间,客户手机号可以重复

  • 每个销售组正常客户数预估在一千万内

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

自己尝试过的方法及问题

  • 目前是把users表中的数据按销售组ID同步到redis中,用set集合保存手机号

SADD users:1 13100010001 13100010002 13100010003SADD users:2 13100020001 13100020002 13100020003SADD users:3 13100030001 13100030002 13100030003
  • 导入时,先把excel表数据按文件ID(这里假设为8)写入redis,得到set集合mobiles:8

  • 再与销售组原始数据set集合users:1做差集,得到差集diff:1

  • 最后把差集写入mysql

SADD mobiles:8 13100010001 13100010004SDIFFSTORE diff:1 mobiles:8 users:1

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

你期待的结果是什么?

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


梦里花落0921
浏览 993回答 2
2回答

江户川乱折腾

其实问题主要是redis和mysql数据会出现不一致。如果可以保证一致的话,现在的办法也是可行的。如果没办法保证,则只能使用mysql验证手机号是否存在。

白猪掌柜的

gid和mobile 唯一索引,然后读取excel表,直接分批insert 表
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Vue.js