tp6框架 万级数据入库

用框架自带的saveall方法  当数据超过一千就会出现遗漏的情况

下面是原生sql方法:

function saveCourse($newArr, $count)
{
    $sql = "replace into edu_wx_school_self_course  (study_hour,code,cn_name,en_name,study_score,school_qy) values";
    for ($a = 1; $a <= $count; $a++) {
        $hour = $newArr[$a]['study_hour'] ?: 0;
        $code = $newArr[$a]['code'];
        $cnname = $newArr[$a]['cn_name'];
        $enname = $newArr[$a]['en_name'];
        $sscore = $newArr[$a]['study_score'] ?: 0;
        $sqy = $newArr[$a]['school_qy'] ?: 0;

        //拼接
        $itemStr = '( ';
        $itemStr .= "'$hour','$code','$cnname','$enname','$sscore','$sqy'";
        $itemStr .= '),';
        $sql .= $itemStr;
    }

    //移除最后一个逗号
    $sql = rtrim($sql, ',');
    $sql .= ';';

    return Db::execute($sql);
}

测试结果一万条数据10秒内即可全部入库成功

replace into 跟 insert 功能类似,不同点在于:replace into 首先尝试插入数据到表中, 1. 如果发现表中已经有此行数据(根据主键或者唯一索引判断)则先删除此行数据,然后插入新的数据。 2. 否则,直接插入新数据。

你可能感兴趣的:(linux,数据库)