簡體   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