【问题标题】:Import huge csv file to database in laravel将巨大的csv文件导入laravel中的数据库
【发布时间】:2021-02-24 11:51:35
【问题描述】:

我正在关注的教程:https://dcblog.dev/laravel-import-large-csv-file 我实际上正在按照本教程使用 chunk() 将一个巨大的 CSV 文件导入数据库。根据本教程,在将巨大的 CSV 记录分割成每个文件的 1000 条记录后,它应该将该文件存储在我们的 resources 文件夹内的一个临时文件夹中,然后使用 updateOrCreate() 方法将这些文件批量上传到 DB 中。但我只能将巨大的 CSV 记录切成一个文件中的 1000 条记录并存储在临时文件夹中,但无法插入数据库。如果你们中的任何一个好心人通过此链接并找出我在这里做错了什么,这对像我这样的初学者会有很大帮助?

此代码应将数据存储在数据库中。

<?php

namespace App\Console\Commands;

use App\Models\Subscription;
use Illuminate\Console\Command;

class importSubscription extends Command
{
    protected $data;


    /**
     * The console command name.
     *
     * @var string
     */
    protected $name = 'import:subscriptions';

    /**
     * The console command description.
     *
     * @var string
     */
    protected $description = 'Import Subscriptions from an array.';

    /**
     * Create a new command instance.
     *
     * @return void
     */
    public function __construct()
    {
        parent::__construct();
    }

    /**
     * Execute the console command.
     *
     * @return mixed
     */
    public function handle()
    {
        $path = base_path("resources/pendingsubs/*.csv");
        foreach (array_slice(glob($path),0,2) as $file) {
            $data = array_map('str_getcsv', file($file));

            foreach($data as $row) {
                Subscription::updateOrCreate([
                    'email' => $row[0],
                ], ['email' => $row[0]]);
            }

            unlink($file);
        }
    }
}


【问题讨论】:

    标签: laravel chunks


    【解决方案1】:

    为什么要用 laravel 做这个,有必要吗?

    因为您只需一个命令即可轻松完成。

    关注这个link

    【讨论】:

      猜你喜欢
      • 2015-09-08
      • 2013-05-17
      • 1970-01-01
      • 2018-03-20
      • 2014-03-27
      • 1970-01-01
      • 2016-12-30
      • 1970-01-01
      • 2020-07-09
      相关资源
      最近更新 更多