mysql快速(秒级别)导入百万级别的数据

最近业务需求需要将一个已有的用户数据导入到 新的项目中来,看了一下数据是 1239146条。

达到了百万级别的生产数据~ 如下图:

现在的业务需求是将 member_info 表的数据导入到 t_account(主表) 和 t_account_platform_info(附表) 中去,

通过写java程序是可以导入的,但是又得去发版,写controller,service,dao,mapper.xml 对象类。等等繁琐的过程。

先看原始表结构数据:

取到对应的表字段值,然后转换成我们自己需要的字段值,最终分表 插入到我们需要的表t_account,和t_account_platform_info

和java程序导入一样,需要分批次导入、废话不多说。存储过程代码上图:

重点来了,

1.将查询的数据循环迭代然后批量插入,记得循环前要 开启事务。

2.我这边是迭代50000次 批量commit一次。

3.循环到ID 最大的数量时 commit一次。

 

整个过程提交事务就只有2次。减少了事务的操作。

整个操作的过程中,导入的用户数据100多万条耗时一分钟不到。

还有最重要的,测试过程不要在客户端工具中执行 存储过程。客户端会报错内存溢出。

要通过命令行执行存储过程 call 命令去调用。

 

 

 

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

你微笑莳很美丶

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值