本文摘自PHP中文网,作者coldplay.xixi,侵删。
mysql批量录入数据的方法:1、使用循环插入;2、减少连接资源,拼接一条sql;3、使用存储过程;4、使用【MYSQL LOCAL_INFILE】。
本教程操作环境:windows7系统、mysql8.0.22版,DELL G3电脑,该方法适用于所有品牌电脑。
相关免费学习推荐:mysql视频教程
mysql批量录入数据的方法:
方法一:循环插入
这个也是最普通的方式,如果数据量不是很大,可以使用,但是每次都要消耗连接数据库的资源。
大致思维如下
(我这里写伪代码,具体编写可以结合自己的业务逻辑或者框架语法编写)
1 2 3 4 5 6 7 8 9 10 11 12 13 | for ( $i =1; $i <=100; $i ++){
$sql = 'insert...............' ;
}
foreach ( $arr as $key => $value ){
$sql = 'insert...............' ;
}
while ( $i <= 100){
$sql = 'insert...............' ;
$i ++
}
|
因为太过普通同时也没什么难度同时也不是我今天主要写的所以这里我不多说
方法二:减少连接资源,拼接一条sql
伪代码如下
1 2 3 4 5 6 7 8 9 10 | $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);
( 'xxx' , 'xxx' ),( 'xxx' , 'xxx' ),( 'xxx' , 'xxx' ),( 'xxx' , 'xxx' ),( 'xxx' , 'xxx' ),( 'xxx' , 'xxx' )
.......
|
这样写正常插入一万条基本问题不大,除非数据很长,应付普通的批量插入够用了,比如:批量生成卡号,批量生成随机码等等。。。
方法三:使用存储过程
这个我手里正好再用这个就把sql付出来,具体业务逻辑大家自己组合一下就可以。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | delimiter $$$
create procedure zqtest()
begin
declare i int default 0;
set i=0;
start transaction;
while i<80000 do
set i=i+1;
end while ;
commit;
end
$$$
delimiter;
call zqtest();
|
这个也只是个测试代码,具体参数大家自行定义
我这里是一次插入8万条,虽然不多但是,每一条数据量都很大,有很多varchar4000 和text字段
耗时 6.524s
方法四:使用MYSQL LOCAL_INFILE
阅读剩余部分
相关阅读 >>
聊聊mysql中的参数
一次mysql死锁排查过程的全纪录
mysql工作太闪退怎么办
mysql自增删除后,添加数据id不会紧接怎么办
mysql怎么查询第5到10条的数据
mysql怎样查看用户权限
mysql初次不能登录解决方法
mysql存储过程是什么
mysql如何查询表信息
mysql如何从ibd文件恢复数据
更多相关阅读请进入《mysql》频道 >>
机械工业出版社
本书主要讲述了数据模型、基于对象的数据库和XML、数据存储和查询、事务管理、体系结构等方面的内容。
转载请注明出处:木庄网络博客 » mysql怎么批量录入数据