大规模导入Laravel-Excel

3

我有一个包含28k行的Excel文件。
我想要将其加载后插入到数据库中,但是程序卡住了。(空格)
我尝试将数据减少到5k行,它可以工作,但是速度太慢了。
我也尝试使用chunk,只处理了5k条数据,但出现了“超过300秒的最大执行时间”的错误。
以下是代码:

Excel::filter('chunk')->load(storage_path('excel/exports/').$fileName)->chunk(1000, function($results)
    {
        foreach($results as $key)
        {
            // even nothing to do
        }
    });

处理5k行真的很大吗?
还是我的操作方法不对?
谢谢。


添加 set_timeout(0); 来避免时间限制(或修改 php.ini 文件)。 - maztch
这是我的最后选择。那么,没有其他方法了吗?我的意思是,我做得对吗? - Irfandi D. Vendy
你的数据库管理面板里没有导入功能吗? - Cas Bloem
“你是什么意思?我的应用程序非常简单。管理员将有一个选项来上传Excel文件,然后从控制器中,它将处理Excel的数据以插入到数据库中。插入28k数据很容易,但处理28个Excel行是我目前的问题…” - Irfandi D. Vendy
这里有一个比Laravel Excel更快的替代品:https://github.com/rap2hpoutre/fast-excel 它还使用更少的内存。 - rap-2-h
2个回答

1

是的,就像我在评论中说的那样,那将是我的最后选择。 所以,28k被认为是巨大的吗? 我已经尝试将数据减少到10k,并且需要大约10分钟来迭代它们。 - Irfandi D. Vendy

1

使用分块可以有效预防内存过度消耗,但会降低程序的执行速度。

如果要提高速度,可以增加分块的数量,但需谨慎处理。

注意:每个分块结束后,应用程序需要再次读取文件,这需要时间。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接