ITPub博客

首页 > IT职业 > IT职场 > python高效处理-批量insert数据到mysql

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

原创 IT职场 作者:water_chou 时间:2018-04-11 17:40:25 0 删除 编辑
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博客 ” ,链接:https://blog.itpub.net/24349972/viewspace-2152816/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论
上善若水

注册时间:2011-08-10

  • 博文量
    51
  • 访问量
    75752