php+mysql实现数据分批插入
上周需要将云端的数据有条件的录入到mysql中,最开始是使用遍历数据然后一条条的插入的笨方法,结果速度慢的要死,所以又随便写了个笨方法2.0,记录一下自己菜鸟的成长历程。同时这也是在博客园的第一篇文章,目的仅仅是单纯的记录一下自己的狗屎代码,因为我是菜鸟,哈哈。。。
比如说有10001条数据,每次插入1000条,分11次插入完成,代码如下:
1 <?php 2 /** 3 * Created by PhpStorm. 4 * User: Soup 5 * Date: 2016/12/29 6 * Time: 21:04 7 */ 8 9 $mysqli = new mysqli('localhost','root','123456','test'); 10 11 12 13 if ($mysqli->connect_error) { 14 die('Connect Error (' . $mysqli->connect_errno . ') ' 15 . $mysqli->connect_error); 16 } 17 18 /* 19 *@param $data array 要插入的数据 20 *@param $each int 每次插入的条数 21 */ 22 function batchInsert($data,$each){ 23 24 $num = count($data); // 数据总数 25 $step = ceil( $num/$each); // insert执行总次数 26 27 28 $j = 1; 29 $s = $step; 30 31 foreach ($data as $val){ // 目前仅仅是起到循环作用 32 if($j > $step) break; 33 $arr2 = array_slice($data, ($step - $s) * $each, $each); // 每次取100条 34 $sql = "insert into batch VALUES "; 35 foreach($arr2 as $v){ 36 $exist = $GLOBALS['mysqli']->query("select * from batch where number = '$v' limit 1 "); // 检查要插入的数据是否已存在 37 $row = $exist->fetch_array(MYSQLI_ASSOC); 38 if(empty($row)){ 39 $sql .= "(null,$v,now()),"; // 将sql语句拼接起来 40 } 41 } 42 $sql = rtrim($sql, ','); 43 $result = $GLOBALS['mysqli']->query($sql); 44 echo $sql,'<br>'; 45 46 47 $j++; 48 $s--; 49 } 50 return $result; 51 } 52 53 // 先测试简单的数字插入 54 for ($i = 1;$i <= 505;++$i){ 55 $arr[$i] = $i; 56 } 57 58 var_dump(batchInsert($arr,100));
测试505条数据,每次插入100条,分6次插入完成。
转载于:https://www.cnblogs.com/soup/p/6235090.html
php+mysql实现数据分批插入相关推荐
- python db.commit_python对MySQL进行数据的插入、更新和删除之后需要commit,数据库才会真的有数据操作。(待日后更新)...
今天在尝试用下面的python代码对MySQL进行数据的插入.更新和删除时, 突然发现代码执行成功, 通过代码查询也显示数据已经插入或更新, 但是当我在MySQL客户端通过SQL语句查询时, 数据库中 ...
- 使用hibernate与mysql时数据不能插入的原因及解决办法
1.背景 之前从没用过hibernate,因此在网上搜了一下hibernate快速入门方面的信息,最后我按照<Myeclipse Hibernate 快速入门 中文版>(CSDN,百度文库 ...
- mysql 大数据量插入遇到瓶颈 可行性方案探究
数据迁移.数据恢复往往都需要做大数据量的插入操作,但是,不同的插入方法对性能的影响也是非常大的 插入数据分析 一次插入多行的值 插入行所需的时间由以下因素决定(参考 MySQL 5.7 参考手册: 8 ...
- mysql无法插入行_在mysql中数据才插入20多行就报错,求救啊!!!
mysql的建表语句如下:CREATETABLE`auth_function`(`id`varchar(255)NOTNULL,`name`varchar(255)DEFAULTNULL,`descr ...
- mysql 事务数据分批_mysql 如何分批 读取数据
情景是数据库里有一系列的post(新闻类),现在想根据post表中有的post_date(时间),view(浏览数量),或者post_like表的likeCount进行排序,并分批读取数据,limit ...
- list 分批_java 数据分批插入
展开全部 import java.util.ArrayList; import java.util.List; public class FenDuan { /** * @param args */ ...
- navicat还原mysql备份数据时,部分表无数据
最近在使用navicat正在本地恢复数据时,发现部分表数据,百度一下,发现是由于max_allowed_packed设置过小,而insert时数据过多导致出错,修改max_allowed_packed ...
- MySQL一次查几万条数据,【mysql】一次插入几万条数据应该怎么做优化
刚刚去面试,面试官提问了我一次插入几万条数据有什么优化方法,一次更新几万条数据有什么优化方法,这些我之前都没有用过,希望大家给我解一下惑. 回答 1.insert批量执行,禁止单条insert val ...
- 【C#】MySQL数据库数据导入(批量Excel插入)
系列文章 [C#]代码模板生成工具 本文链接:https://blog.csdn.net/youcheng_ge/article/details/126890673 [C#]MySQL数据库导入工具( ...
最新文章
- 从更底层研究C\C++动态内存分配
- Tomcat forward debug - how is jsp file served in Tomcat
- DaVinci的Buffer_Handle和BufTab Cmem函数调用
- 50session的销毁会话和超时管理
- mysql5.7的客户端软件_mysql数据库管理客户端工具|mysql数据库管理软件 v5.7.22 64位官方版 - 软件下载 - 绿茶软件园|33LC.com...
- 吴恩达机器学习训练2:Logistic回归
- Excel-VBA操作文件四大方法之三(3/4)
- win98万能显卡驱动_万能显卡驱动下载
- HTML实现百度换肤
- Ubuntu18.04创建快捷方式
- 无线网卡、以太网驱动消失,“没网络”并且重新下载驱动仍然出现感叹号(windows仍在设置此设备的类配置,代码56)解决方法,绝对绝对有效
- NEFU锐格实验一[字符串]
- Grub4dos 硬盘引导 iso 文件
- C语言:从低位开始取出长整型变量s奇数位上的数,依次构成一个新数放在t中。
- 双稳态电路的两个稳定状态是什么_干货 | 常见的脉冲电路到底有何用途和特点?终于了解了!...
- Tableau 空难统计分析(十)人类历史上的事故数和死亡人数
- sql2008数据导入与导出
- ios视频循环播放实现
- OLE excel
- 使用Vmware workstation出现权限不足
热门文章
- android 资源如何下沉,个推安卓手机报告: 华为一路领跑,OV下沉市场表现不俗
- python pyqt eric_科学网—PyQt及Eric的安装 - 张鲁新的博文
- android navigation bar高度,Android获取屏幕真实高度包含NavigationBar(底部虚拟按键)
- mysql截取字符串中的部分内容_Mysql字符串截取及获取指定字符串中的数据
- 这35个Java代码优化细节,你用了吗?
- 软件测试人员:如何优秀的提Bug?
- 安卓App的启动过程、安卓布局分类及布局和页面的关系
- (字节/华为/美团)前端面经记录冷冷清清的金三银四
- Nodejs 文件上传
- 修改oracle 管理员密码 cmd