批量插入数据表

2 篇文章 0 订阅
<?php
//$dsn = 'mysql:host=192.168.10.209;dbname=mysqlTest';
//$db = new PDO($dsn,'数据库用户名','数据库密码',array(PDO::ATTR_PERSISTENT => true));

$dsn = mysql_connect("数据库连接地址","数据库用户名","数据库密码");
if (!$dsn)
  {
  die('Could not connect: ' . mysql_error());
  }
  else

$db = mysql_select_db("mysqlTest", $dsn);

//删除上次的插入数据
mysql_query('delete from `test`');
//开始计时  
$start_time = time();
$sum = 1000000;
// 测试选项
$num = 1;
 
if ($num == 1){
    
// 单条插入
    for($i = 0; $i < $sum; $i++){
        mysql_query("insert into `test` (`id`,`name`) values ($i,'tsetssdf')");
    }
} elseif ($num == 2) {
    
// 批量插入,为了不超过max_allowed_packet,选择每10万插入一次
    for ($i = 0; $i < $sum; $i++) {
        if ($i == $sum - 1) { 
//最后一次
            if ($i%100000 == 0){
                $values = "($i, 'testtest')";
                mysql_query("insert into `test` (`id`, `name`) values $values");
            } else {
                $values .= ",($i, 'testtest')";
                mysql_query("insert into `test` (`id`, `name`) values $values");
            }
            break;
        }
        if ($i%100000 == 0) { 
//平常只有在这个情况下才插入
            if ($i == 0){
                $values = "($i, 'testtest')";
            } else {
                mysql_query("insert into `test` (`id`, `name`) values $values");
                $values = "($i, 'testtest')";
            }
        } else {
            $values .= ",($i, 'testtest')";    
        }
    }
} elseif ($num == 3) {
    
// 事务插入
    $db->beginTransaction(); 
    for($i = 0; $i < $sum; $i++){
        mysql_query("insert into `test` (`id`,`name`) values ($i,'tsetssdf')");
    }
    $db->commit();
} elseif ($num == 4) {
    
// 文件load data
    $filename = dirname(__FILE__).'/test.sql';
    $fp = fopen($filename, 'w');
    for($i = 0; $i < $sum; $i++){
        fputs($fp, "$i,'testtest'\r\n");    
    }
    $db->exec("load data infile '$filename' into table test fields terminated by ','");
}
 
$end_time = time();
echo "总耗时", ($end_time - $start_time), "秒\n";
echo "峰值内存", round(memory_get_peak_usage()/1000), "KB\n";
 
?>

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值