繁体   English   中英

从csv到mysql插入大数据使用laravel提供HTTP错误500

[英]Insert big data from csv to mysql gives HTTP ERROR 500 using laravel

我正在尝试使用laravel查询生成器将40万条记录从csv插入到mysql中,但在服务器上插入将近150k条记录后却给出了HTTP错误500,但在本地主机上它按预期工作正常

我已经将max_execution_time增加到99999999。

if (($handle = fopen($path, "r")) !== FALSE) {
    fgetcsv($handle);
    try {
        while (($data = fgetcsv($handle, 0, ",")) !== FALSE) {
            $num  = count($data);
            $row++;

                $insert = [
                'col1' => $data[0],
                'col2' => $data[1],
                'col3' => $data[2],
                'col4' => $data[3],
            ];
            $insertData = DB::table('mytable')->insert($insert);
        }
        fclose($handle);
    } catch(\PDOException $e) { 
        if($e->getCode() != 23000){ 
                throw new \PDOException($e->getMessage(), $e->getCode(), $e); 
        }
    }
}

向每个插入的数据库进行查询确实很慢。 最好对所有行都执行一个插入请求。 将此行移到while循环之外

$insertData = DB::table('mytable')->insert($insert);

并改变您收集数据的方式

$insert = [...];

对此

$insert[] = [...];

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM