Laravel高效上传大CSV



我试图在laravel上传CSV文件到我的数据库。但我的CSV文件非常大,我要导入的行几乎有5亿行。(我使用Maatwebsite来做这个)

当我尝试导入它时,我得到:

Maximum execution time of 300 seconds exceeded

你可以看到我已经改变了max_input_time;在php。初始化文件。300秒就足够了,因为datagrip只需要3分钟。即使在laravel中需要更长的时间也必须有其他方法而不是增加max_input_time

这是转换模型中的数据并最终将其放入数据库的代码:

public function model(array $row)
{
return new DutchPostalcode([
'postalcode' => $row['PostcodeID'],
'street' => $row['Straat'],
'place' => $row['Plaats'],
'government' => $row['Gemeente'],
'province' => $row['Provincie'],
'latitude' => $row['Latitude'],
'longtitude' => $row['Longitude'],
]);
}

this is my controller:

public function writeDutchPostalCodes(){
Excel::import(new DutchPostalcodes, 'C:UsersMoemeDocumentsProjectsahmo appsAppsfreshnessFreshness - beFreshnessBEresourcespostalcodespostcodetabel_1.csv');
}

使用多级队列。

https://laravel.com/docs/9.x/queues

对于大型进程,必须在后台执行。

增大php.ini中的max_execution_time或者拆分文件进行类似于array_chunk

的处理

相关内容

  • 没有找到相关文章

最新更新