Laravel 5批量导入3000000条记录/项目

标签 laravel

我有一个包含 csv 文件中的 3000000 个项目的数组。

现在我可以像这样将其导入数据库。

这是最快、最好的方法吗?

或者有更好的解决方案吗?

$items = [
    0 => array(
        'id' = 1,
        'x_id' = 2,
        'y_id' = 3,
        'date' = '2018-02-20',
    ),
    1 => array(
        'id' = 1,
        'x_id' = 2,
        'y_id' = 3,
        'date' = '2018-02-20',
    ),
    etc etc
];

DB::table('items')->insert($items);

最佳答案

Laravel chunk 将在集合上工作,因此将您的项目数组更改为集合:

$items = collect($items);

充分考虑你的选择

$chunks = $items->chunk(100);

然后进行foreach,每次插入100

foreach($chunks as $chunk){
    DB::table('items')->insert($chunk->toArray());
}

关于Laravel 5批量导入3000000条记录/项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48882509/

相关文章:

php - 我可以独立使用 Laravel 的数据库层吗?

laravel - HTTPS:Laravel 使用 .htaccess (public/)

laravel - 按关系列排序

php - Oracle OCI8 扩展未在 php 7.4 中加载

php - Laravel 多对多查询关系与 where 子句

html - 如何使用 LAMP 堆栈存储和访问博客内的图像?

php - 将 header 添加到作为 Laravel 通知发送的电子邮件

javascript - 如何在 Laravel 中使用日期选择器?

php - 如何在 Laravel 中划分读/写数据库设置?

javascript - 如果数组循环内的项目不可用,则返回零并按工作日排列项目