mysql大批量插入数据四种方法

2020-02-10 00:49 来源:未知

前言

时间: 2019-06-13阅读: 363标签: 数据方法一:循环插入

本文主要给大家介绍了关于mysql大批量插入数据的4种方法,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍吧

这个也是最普通的方式,如果数据量不是很大,可以使用,但是每次都要消耗连接数据库的资源。大致思维如下(我这里写伪代码,具体编写可以结合自己的业务逻辑或者框架语法编写)

方法一:循环插入

for($i=1;$i=100;$i++){ $sql = 'insert...............'; //querysql}foreach($arr as $key = $value){$sql = 'insert...............'; //querysql}while($i = 100){$sql = 'insert...............'; //querysql $i++}

这个也是最普通的方式,如果数据量不是很大,可以使用,但是每次都要消耗连接数据库的资源。

因为太过普通同时也没什么难度同时也不是我今天主要写的所以这里我不多说

大致思维如下

澳门新浦金网站,方法二:减少连接资源,拼接一条sql

for($i=1;$i=100;$i++){ $sql = 'insert...............'; //querysql}foreach($arr as $key = $value){$sql = 'insert...............'; //querysql}while($i = 100){$sql = 'insert...............'; //querysql $i++}

伪代码如下

因为太过普通同时也没什么难度同时也不是我今天主要写的所以这里我不多说

//这里假设arr的key和数据库字段同步,其实大多数框架中在php操作数据库的时候都是这么设计的$arr_keys = array_keys($arr);$sql = 'INSERT INTO tablename (' . implode(',' ,$arr_keys) . ') values';$arr_values = array_values($arr);$sql .= " ('" . implode("','" ,$arr_values) . "'),";$sql = substr($sql ,0 ,-1);//拼接之后大概就是 INSERT INTO tablename ('username','password') values ('xxx','xxx'),('xxx','xxx'),('xxx','xxx'),('xxx','xxx'),('xxx','xxx'),('xxx','xxx').......//querysql

方法二:减少连接资源,拼接一条sql

这样写正常插入一万条基本问题不大,除非数据很长,应付普通的批量插入够用了,比如:批量生成卡号,批量生成随机码等等。。。

伪代码如下

方法三:使用存储过程

//这里假设arr的key和数据库字段同步,其实大多数框架中在php操作数据库的时候都是这么设计的$arr_keys = array_keys($arr);$sql = 'INSERT INTO tablename (' . implode(',' ,$arr_keys) . ') values';$arr_values = array_values($arr);$sql .= " ('" . implode("','" ,$arr_values) . "'),";$sql = substr($sql ,0 ,-1);//拼接之后大概就是 INSERT INTO tablename ('username','password') values ('xxx','xxx'),('xxx','xxx'),('xxx','xxx'),('xxx','xxx'),('xxx','xxx'),('xxx','xxx').......//querysql

这个我手里正好再用这个就把sql付出来,具体业务逻辑大家自己组合一下就可以。

这样写正常插入一万条基本问题不大,除非数据很长,应付普通的批量插入够用了,比如:批量生成卡号,批量生成随机码等等。。。

delimiter $$$create procedure zqtest()begindeclare i int default 0;set i=0;start transaction;while i80000 do //your insert sql set i=i+1;end while;commit;end$$$delimiter;call zqtest();

方法三:使用存储过程

这个也只是个测试代码,具体参数大家自行定义我这里是一次插入8万条,虽然不多但是,每一条数据量都很大,有很多varchar4000 和text字段耗时 6.524s

TAG标签:
版权声明:本文由澳门新浦金网站发布于数据库,转载请注明出处:mysql大批量插入数据四种方法