mysql大批量插入数据的4种方法示例
发表于:2026-11-01 作者:千家信息网编辑
千家信息网最后更新 2026年11月01日,前言本文主要给大家介绍了关于mysql大批量插入数据的4种方法,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍吧方法一:循环插入这个也是最普通的方式,如果数据量不是很大,可以使用,但是每
千家信息网最后更新 2026年11月01日mysql大批量插入数据的4种方法示例
前言
本文主要给大家介绍了关于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
伪代码如下
//这里假设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 i<80000 do //your insert sql set i=i+1;end while;commit;end$$$delimiter;call zqtest();
这个也只是个测试代码,具体参数大家自行定义
我这里是一次插入8万条,虽然不多但是,每一条数据量都很大,有很多varchar4000 和text字段
耗时 6.524s
方法四:使用MYSQL LOCAL_INFILE
这个我目前正在使用,所以顺便把pdo的代码也复上来,以便大家参考
//设置pdo开启MYSQL_ATTR_LOCAL_INFILE/*hs96.cn@gmail.compublic function pdo_local_info (){ global $system_dbserver; $dbname = 'hs96.cn@gmail.com'; $ip = 'hs96.cn@gmail.com'; $user = 'hs96.cn@gmail.com'; $pwd = 'hs96.cn@gmail.com'; $dsn = 'mysql:dbname=' . $dbname . ';host=' . $ip . ';port=3306'; $options = [PDO::MYSQL_ATTR_LOCAL_INFILE => true]; $db = new PDO($dsn ,$user ,$pwd ,$options); return $db; }//伪代码如下public function test(){ $arr_keys = array_keys($arr); $root_dir = $_SERVER["DOCUMENT_ROOT"] . '/'; $my_file = $root_dir . "hs96.cn@gmail.com/sql_cache/" . $order['OrderNo'] . '.sql'; $fhandler = fopen($my_file,'a+'); if ($fhandler) { $sql = implode("\t" ,$arr); $i = 1; while ($i <= 80000) { $i++; fwrite($fhandler ,$sql . "\r\n"); } $sql = "LOAD DATA local INFILE '" . $myFile . "' INTO TABLE "; $sql .= "tablename (" . implode(',' ,$arr_keys) . ")"; $pdo = $this->pdo_local_info (); $res = $pdo->exec($sql); if (!$res) { //TODO 插入失败 } @unlink($my_file); }}这个同样每一条数据量都很大,有很多varchar4000 和text字段
耗时 2.160s
以上满足基本需求,100万数据问题不大,要不数据实在太大也涉及分库分表了,或者使用队列插入了。
总结
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对的支持。
数据
方法
代码
很大
普通
字段
数据库
参考
学习
万条
不大
业务
内容
同时
就是
框架
资源
逻辑
问题
生成
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
瑰夏咖啡
互联网科技企业
什么是科技互联网
互联网科技工作委员会毛军
中国互联网科技工作委员会毛军
A股互联网金融科技公司
互联网金融 科技金融
浩特互联网科技
万达互联网科技
苏州大垚互联网科技
金融科技和互联网金融
镁科技互联网资讯平台
滨湖区互联网智能科技产品供应
海南购全球互联网科技
汉立互联网科技有限公司联系电话
赶超互联网科技 微信多开
和信科技工业互联网
本届互联网博览会上的黑科技
徐州市互联网科技有限公司
合肥互联网科技公司公章图片
融贸通互联网科技
深圳艾佳互联网科技
互联网科技公司介绍
中国最先进互联网科技公司
健康食品互联网创新科技园项目
互联网金融科技展
四川互联网展示科技馆设计
宇信科技在杭州互联网排第几
玉溪新华互联网科技怎么选
青岛互联网科技园