牛骨文教育服务平台(让学习变的简单)
博文笔记

thinkphp5-循环插入百万条数据

创建时间:2017-10-16 投稿人: 浏览次数:442

个人博客https://xgs888.top/post/view?id=53


//由于是跨服务器的两个数据库需要建一个数据模型

<?php
namespace appindexcontroller;

use thinkController;
use appindexmodelindex as indexModel;
class Index extends Controller
{


    public function insertdata()
    {
    	ini_set("max_execution_time", "0");//设置永不超时,无限执行下去直到结束
    	$model = new indexModel();
    	$datas = [];
    	//循环插入一百万
    	for ($i=10000; $i <1000000 ; $i+=10000) { 
    		# code...
    		$j = $i-10000;
    		$data = db("phone_record")->where("id>=$j and id<$i ")->select();
	    	foreach ($data as $key => $value) {
	    		# code...
	    		$datas[$key]["phone_no"] = $value["phone_no"];
	    		$datas[$key]["mac"] = $value["mac"];
	    		$datas[$key]["area"] = $value["area"];
	    		$datas[$key]["source_station"] = $value["source_station"];
	    		$datas[$key]["up_time"] = $value["up_time"];
	    		$datas[$key]["rad_time"] = $value["rad_time"];
	    	}
	    	
	    	
	    	$model->saveAll($datas);
	    	unset($datas);//销毁插入的数据数组
    	}
    	
    	/*$re = $model->select();
    	if($re){ //模型查询需要转换成数组,查询集合需要用collection()
    		$list = collection($re)->toArray();
    	}
    	print_r($list);*/

    }
}

index.php模型

<?php
namespace appindexmodel;
use thinkModel;

class index extends model{
	 protected $connection = [        // 数据库类型
        "type"        => "mysql",        // 数据库连接DSN配置
        "dsn"         => "",        // 服务器地址
        "hostname"    => "127.0.0.1",        // 数据库名
        "database"    => "radius",        // 数据库用户名
        "username"    => "root",        // 数据库密码
        "password"    => "",        // 数据库连接端口
        "hostport"    => "",        // 数据库连接参数
        "params"      => [],        // 数据库编码默认采用utf8
        "charset"     => "utf8",        // 数据库表前缀
        "prefix"      => "",
    ];
    protected $table = "phone_record";
}

声明:该文观点仅代表作者本人,牛骨文系教育信息发布平台,牛骨文仅提供信息存储空间服务。