[英]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.