入门客AI创业平台(我带你入门,你带我飞行)
博文笔记

PHP批量添加数据

创建时间:2018-04-02 投稿人: 浏览次数:116

<?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; $i++){

    $sql = "INSERT INTO test_md5(`data`,`mda5_data`) VALUE (".$i.","".md5($i)."")";

    $sqli->query( $sql );

}

 

/**

 * 批量添加 方法2

 * 使用事务提交,批量插入数据库(每隔10W条提交下)

 */

 

$sqli->query( "start transaction" );

for( $i=0;$i<=2000000;$i++ ){

    $sql = "INSERT INTO test_md5(`data`,`md5_data`) VALUE (".$i.","".md5($i)."")";

    // echo $i."=>".$sql."<br/>";

    $sqli->query( $sql );

    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; $i++ ){

    $data_md5 = md5($i);

    $sql .= "( ".$i.","".$data_md5.""),";

}

$sql = substr( $sql,0, strlen($sql)-1 );

// echo $sql;die();

$sqli->query( $sql );

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

 

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

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

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

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

声明:该文观点仅代表作者本人,入门客AI创业平台信息发布平台仅提供信息存储空间服务,如有疑问请联系rumenke@qq.com。