You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用PHP foreach分批插入MySQL数据,突破单次20k限制

分批批量插入解决方案

你的问题核心是逐条插入效率低且超过服务器单次插入限制,改成按20k每批做批量插入即可解决问题,同时还能提升插入性能。以下是修改后的代码:

$url_setting = LIBRARY_PATH.'data/uploads/document/dataSettin.json';  
$jsondata_setting = file_get_contents($url_setting); 
$data_setting = json_decode($jsondata_setting, true);

// 定义每批插入的数量,匹配服务器限制的20k
$batchSize = 20000;
// 将原始数据拆分为若干批次
$batches = array_chunk($data_setting, $batchSize);

foreach ($batches as $batch) {
    // 整理当前批次的插入数据格式
    $insertData = [];
    foreach ($batch as $row) {
        $insertData[] = [                            
            'PROMO_CODE'      => $row['PROMO_CODE'],  
            'PROMO_NAME'      => $row['PROMO_NAME'],      
            'DISCOUNT_TYPE'   => $row['DISCOUNT_TYPE'],        
            'PROMO_PRIORITY'  => $row['PROMO_PRIORITY'],       
            'PROCESS_TYPE'    => $row['PROCESS_TYPE'],         
            'PROMO_STATUS'    => $row['PROMO_STATUS'],         
            'CREATED'         => $row['CREATED'],           
            'CREATEDBY'       => $row['CREATEDBY'],        
            'UPDATED'         => $row['UPDATED'],           
            'UPDATEDBY'       => $row['UPDATEDBY'],  
        ];
    }
    // 用框架的批量插入方法(适配多数PHP数据库框架,如CodeIgniter的insert_batch)
    $db->insert_batch('M_PROMO_SETTING', $insertData);
    
    // 如果你的数据库类不支持批量插入方法,可手动构建SQL(记得转义防注入):
    // $columns = implode(', ', array_keys($insertData[0]));
    // $values = [];
    // foreach ($insertData as $item) {
    //     $escapedVals = array_map(fn($val) => $db->escape($val), $item);
    //     $values[] = '('.implode(', ', $escapedVals).')';
    // }
    // $sql = "INSERT INTO M_PROMO_SETTING ($columns) VALUES ".implode(', ', $values);
    // $db->query($sql);
}

关键说明:

  • array_chunk 分批次:把100k条数据按20k每批拆分,确保每批数据量不触发服务器限制。
  • 批量插入替代逐条插入:相比循环调用insert,批量插入会生成单条包含多条数据的INSERT语句,既符合服务器限制,又能大幅提升插入效率。
  • 兼容性处理:如果所用框架没有批量插入方法,可使用注释中的手动构建SQL方式,注意对数据做转义避免SQL注入风险。

内容的提问来源于stack exchange,提问作者hardyOfficial Official

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.11 16:55:21