mysql批量insert数据的方法
发表于:2025-01-21 作者:千家信息网编辑
千家信息网最后更新 2025年01月21日,这篇文章主要介绍了mysql批量insert数据的方法,具有一定借鉴价值,需要的朋友可以参考下。希望大家阅读完这篇文章后大有收获。下面让小编带着大家一起了解一下。mysql批量insert数据的方法:
千家信息网最后更新 2025年01月21日mysql批量insert数据的方法
这篇文章主要介绍了mysql批量insert数据的方法,具有一定借鉴价值,需要的朋友可以参考下。希望大家阅读完这篇文章后大有收获。下面让小编带着大家一起了解一下。
mysql批量insert数据的方法:1、循环插入;2、减少连接资源,拼接一条sql;3、使用存储过程;4、使用【MYSQL LOCAL_INFILE】。
mysql批量insert数据的方法:
方法一:循环插入
这个也是最普通的方式,如果数据量不是很大,可以使用,但是每次都要消耗连接数据库的资源。
大致思维如下
(我这里写伪代码,具体编写可以结合自己的业务逻辑或者框架语法编写)
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); }}
感谢你能够认真阅读完这篇文章,希望小编分享mysql批量insert数据的方法内容对大家有帮助,同时也希望大家多多支持,关注行业资讯频道,遇到问题就找,详细的解决方法等着你来学习!
数据
方法
代码
普通
同时
数据库
篇文章
资源
很大
万条
业务
字段
框架
过程
逻辑
问题
参考
存储
循环
生成
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
网络安全服务等级评定周期
采购设备管理软件开发
浪潮2u机架式服务器
郑州商起网络技术有限公司
软件开发包括哪些软件
dns服务器 ip
存储服务器sn
数据库应用与维护创建视图
数据库的sql语句是
网络技术顶岗实习周报
hbuilder云数据库登陆
什么是网络技术排名靠前
请将数据库升级到预期版本
公安网络安全考试试题及答案
网络安全执法检查中期总结
软件开发数据模型
数据库语句的连接查询
网络安全小组成员
集成软件开发包
阔知网络软件开发
全国计算机三级网络技术网课
如何获取私服的数据库ip
海南邵赢网络技术官网
计算机网络技术考试成绩
大学生对网络安全的人生
软件开发与编程就业方向
工行软件开发中网址
大数据里的网络安全
武汉思连网络技术有限公司
xpsql数据库 挂起