上周需要将云端的数据有条件的录入到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实现数据分批插入相关推荐

  1. python db.commit_python对MySQL进行数据的插入、更新和删除之后需要commit,数据库才会真的有数据操作。(待日后更新)...

    今天在尝试用下面的python代码对MySQL进行数据的插入.更新和删除时, 突然发现代码执行成功, 通过代码查询也显示数据已经插入或更新, 但是当我在MySQL客户端通过SQL语句查询时, 数据库中 ...

  2. 使用hibernate与mysql时数据不能插入的原因及解决办法

    1.背景 之前从没用过hibernate,因此在网上搜了一下hibernate快速入门方面的信息,最后我按照<Myeclipse Hibernate 快速入门 中文版>(CSDN,百度文库 ...

  3. mysql 大数据量插入遇到瓶颈 可行性方案探究

    数据迁移.数据恢复往往都需要做大数据量的插入操作,但是,不同的插入方法对性能的影响也是非常大的 插入数据分析 一次插入多行的值 插入行所需的时间由以下因素决定(参考 MySQL 5.7 参考手册: 8 ...

  4. mysql无法插入行_在mysql中数据才插入20多行就报错,求救啊!!!

    mysql的建表语句如下:CREATETABLE`auth_function`(`id`varchar(255)NOTNULL,`name`varchar(255)DEFAULTNULL,`descr ...

  5. mysql 事务数据分批_mysql 如何分批 读取数据

    情景是数据库里有一系列的post(新闻类),现在想根据post表中有的post_date(时间),view(浏览数量),或者post_like表的likeCount进行排序,并分批读取数据,limit ...

  6. list 分批_java 数据分批插入

    展开全部 import java.util.ArrayList; import java.util.List; public class FenDuan { /** * @param args */ ...

  7. navicat还原mysql备份数据时,部分表无数据

    最近在使用navicat正在本地恢复数据时,发现部分表数据,百度一下,发现是由于max_allowed_packed设置过小,而insert时数据过多导致出错,修改max_allowed_packed ...

  8. MySQL一次查几万条数据,【mysql】一次插入几万条数据应该怎么做优化

    刚刚去面试,面试官提问了我一次插入几万条数据有什么优化方法,一次更新几万条数据有什么优化方法,这些我之前都没有用过,希望大家给我解一下惑. 回答 1.insert批量执行,禁止单条insert val ...

  9. 【C#】MySQL数据库数据导入(批量Excel插入)

    系列文章 [C#]代码模板生成工具 本文链接:https://blog.csdn.net/youcheng_ge/article/details/126890673 [C#]MySQL数据库导入工具( ...

最新文章

  1. 从更底层研究C\C++动态内存分配
  2. Tomcat forward debug - how is jsp file served in Tomcat
  3. DaVinci的Buffer_Handle和BufTab Cmem函数调用
  4. 50session的销毁会话和超时管理
  5. mysql5.7的客户端软件_mysql数据库管理客户端工具|mysql数据库管理软件 v5.7.22 64位官方版 - 软件下载 - 绿茶软件园|33LC.com...
  6. 吴恩达机器学习训练2:Logistic回归
  7. Excel-VBA操作文件四大方法之三(3/4)
  8. win98万能显卡驱动_万能显卡驱动下载
  9. HTML实现百度换肤
  10. Ubuntu18.04创建快捷方式
  11. 无线网卡、以太网驱动消失,“没网络”并且重新下载驱动仍然出现感叹号(windows仍在设置此设备的类配置,代码56)解决方法,绝对绝对有效
  12. NEFU锐格实验一[字符串]
  13. Grub4dos 硬盘引导 iso 文件
  14. C语言:从低位开始取出长整型变量s奇数位上的数,依次构成一个新数放在t中。
  15. 双稳态电路的两个稳定状态是什么_干货 | 常见的脉冲电路到底有何用途和特点?终于了解了!...
  16. Tableau 空难统计分析(十)人类历史上的事故数和死亡人数
  17. sql2008数据导入与导出
  18. ios视频循环播放实现
  19. OLE excel
  20. 使用Vmware workstation出现权限不足

热门文章

  1. android 资源如何下沉,个推安卓手机报告: 华为一路领跑,OV下沉市场表现不俗
  2. python pyqt eric_科学网—PyQt及Eric的安装 - 张鲁新的博文
  3. android navigation bar高度,Android获取屏幕真实高度包含NavigationBar(底部虚拟按键)
  4. mysql截取字符串中的部分内容_Mysql字符串截取及获取指定字符串中的数据
  5. 这35个Java代码优化细节,你用了吗?
  6. 软件测试人员:如何优秀的提Bug?
  7. 安卓App的启动过程、安卓布局分类及布局和页面的关系
  8. (字节/华为/美团)前端面经记录冷冷清清的金三银四
  9. Nodejs 文件上传
  10. 修改oracle 管理员密码 cmd