Импортируйте большой файл Excel, используя laravel excel и laravel queue - PullRequest
0 голосов
/ 05 марта 2019

laravel excel версия 3.1 laravel версия 5.6 У меня более 100000 строк данных в файле Excel.Я хотел бы импортировать эти данные в мою базу данных.

В моем controller.php

if(request()->file('fertilizer_import')) {
    $import = new FertilizerImport();
    $file = request()->file('fertilizer_import');
    dispatch(new FertilizerImportJob($import, $file));
}

В моем FertilizerImportJob.php

public function __construct($import, $file)
{
    $this->import = $import;
    $this->file = $file;
}
public function handle()
{
    Excel::import($this->import, $this->file);
}

А потом я загрузил свой файл Excel.Это ввести одну строку в таблице заданий.Я запускаю php artisan make:queue, но данные не попадают в мою таблицу удобрений.Как я могу это сделать?Пожалуйста, посоветуйте мне.

1 Ответ

0 голосов
/ 24 мая 2019

Вам следует попробовать использовать чанк и очередь в laravel / Maatwebsite В файле контроллера

public function importExcel()
    {
        $path = resource_path() . "/Houten.xlsx";
        \Excel::import(new TestImport, $path);
        return redirect('/')->with('success', 'All good!');
    return back();
    }

И в вашем файле импорта приложения / Imports / testImports.php

use Maatwebsite\Excel\Concerns\ToCollection;
use Maatwebsite\Excel\Concerns\WithStartRow;
use Illuminate\Contracts\Queue\ShouldQueue;
use Maatwebsite\Excel\Concerns\WithChunkReading;

class TestImport implements ToCollection, WithChunkReading, ShouldQueue,WithStartRow
{
    public function collection(Collection $rows)
    {
        //do your insertion here. //no seprate job required
    }

     public function startRow(): int 
    {
         return 1;
    }

    public function batchSize(): int
    {
        return 500;
    }

    public function chunkSize(): int
    {
        return 500;
    }
}

Затем установитеQUEUE_DRIVER = база данных и запустить код.Вы увидите одну запись в таблице вакансий.тогда вам нужно запустить эту работу.Есть несколько способов выполнить любую работу.ниже один В вашем терминале

php artisan queue:restart
php artisan queue:listen

это выполнит код в функции сбора в блоках и вставит ваши данные.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...