前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >PHP批量添加数据

PHP批量添加数据

作者头像
黄啊码
发布2020-05-29 10:35:42
1.6K0
发布2020-05-29 10:35:42
举报
代码语言:javascript
复制
<?php
// 连接数据库
header('content-type:text/html;charset=utf-8');
define('DB_HOST','127.0.0.1');
define('DB_USER','root');
define('DB_PASS','root');
define('DB_NAME','test');
define('DB_PORT',3306);
define('DB_CHAR','utf8');
define('APPNAME','');
$sqli = new mysqli( DB_HOST, DB_USER, DB_PASS, DB_NAME, DB_PORT);
$sqli->query( "SET NAMES ".DB_CHAR );
ini_set("max_execution_time", "30");
/**
 * 批量添加 方法1
 * 使用insert into循环遍历添加
 */
for ( i = 0; i<2000000; 
 sql = "INSERT INTO test_md5(`data`,`mda5_data`) VALUE (".
 sqli->query( 
}
/**
 * 批量添加 方法2
 * 使用事务提交,批量插入数据库(每隔10W条提交下)
 */
$sqli->query( 'start transaction' );
for( i=0;i<=2000000;
 sql = "INSERT INTO test_md5(`data`,`md5_data`) VALUE (".
    // echo i.'=>'.
 sqli->query( 
    if($i%10000==0){
        $sqli->query('commit transaction');
        $sqli->query('begin');
    }
}
$sqli->query('commit transaction');
/**
 * 批量添加 方法3
 * 使用优化SQL语句,将SQL语句拼接使用 insert into table() values(),(),()然后一次性添加;
 */
ini_set("max_execution_time", "200000");
echo $time_s = date("H:i:s",time())."<br/>";
$sql = "INSERT INTO test_md5(`data`,`md5_data`) VALUES ";
for ( i = 1 ; i<2000000; 
 data_md5 = md5(i);
 sql .= "( ".
}
sql = substr( sql,0, strlen(
// echo $sql;die();
sqli->query( 
echo $time_e = date("H:i:s",time())."<br/>";
/**
 * 15:45:38
 * 15:46:09
 * 不到一分钟执行完毕
 */

注意

1:PHP的代码执行时间

max_execution_time = 200000

2:PHP每一次执行请求的内存空间

memory_limit = 1G

3:mysql接收的最大数据包

max_allowed_packet = 1G

最后总结下,在插入大批量数据时,

第一种方法无疑是最差劲的,

第二种方法在实际应用中就比较广泛,

第三种方法在插入测试数据或者其他低要求时比较合适,速度确实快。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2018-04-02 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档