python高效处理-批量insert数据到mysql

2018年4月9日
今天在帮助同事执行mysql数据库导出导入问题时,无意间发现,
一个是通过客户端工具备份数据库,一个是通过mysqldump备份数据库,
结果两者生成的文本相差一倍大小。于是很好奇分别打开看里面的内容,发现客户端导出的文本中,是完完整整的sql;
而mysqldump的文本中sql 是合并的sql,即一个insert 后面带了很多的value,从而大致省了一半的空间。
另外mysqldump对虚拟列完全支持,相反客户端导出的却不能完全支持导入。
所以相比之下,请熟练使用mysqldump工具。
-----------------------------
在用python解析json格式的文本时,转化成入库sql;原本是一个json 对应一个sql;这样就导致大量的insert语句;
对于一个20M的json文本,大概有20w行的数据,结果入库特别慢,初步估计也得要一个小时。这等于一个insert 就立刻commit;
这在oracle里一个提交也是耗时的,mysql 亦同样耗时。所以后来就有了上面mysqldump为啥入库快的应用了。
mysql支持一个insert语句后面values(),(),(); 这其实就优化成一个sql语句了。
通过测试,如果中间有一个()报错,就全部rollback,不会部分commit,部分rollback。
后来通过这种方式,入库效率简直无法比,几秒也就完成解析入库。

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/24349972/viewspace-2152816/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/24349972/viewspace-2152816/

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值