thinkphp5-循環插入百萬條數據

控制器

//由於是跨服務器的兩個數據庫需要建一個數據模型
<?php
namespace app\index\controller;
use think\Controller;
use app\index\model\index 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);*/
 
    }
}

模型

<?php
namespace app\index\model;
use think\Model;
 
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';
}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章