从excel文件Laravel 5更快地插入数据库记录

时间:2015-09-08 14:16:54

标签: php mysql excel upload laravel-5

我正在创建一个模块,您可以从excel文件上传数据库中的记录。这些只是电话号码。所以这是我的代码:

        $file = Input::file('file');
        Excel::load($file, function($reader) {
            // Getting all results
            $results = $reader->get()->toArray();
            //var_dump($results);exit;
            foreach ($results as $key => $value) {
                $phone = new Phone();
                $phone->msisdn          =  $value['msisdn'];
                $phone->save();
            }
        });

我使用https://github.com/Maatwebsite/Laravel-Excel来阅读excel文件。它工作正常,20分钟上传20,000条记录,我想,有没有办法上传或上传速度更快?我知道这也取决于服务器,但还有其他因素吗?我正在使用MySQL

由于

2 个答案:

答案 0 :(得分:0)

从他们的文档中可能会在您使用如此大的文件时将结果分块。这样你就可以读取文件的块,而不是将整个文件加载到内存中。

http://www.maatwebsite.nl/laravel-excel/docs/import#chunk

答案 1 :(得分:0)

你可以试试这个更快的替代方案(https://github.com/rap2hpoutre/fast-excel):

(new FastExcel)->import($file, function ($line) {
    $phone = new Phone();
    $phone->msisdn = $value['msisdn'];
    $phone->save();
});