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