Importación por lotes de grandes archivos Excel o CSV.

La importacion de archivos csv viene explicada en otro post el cual te aconsejo que leas para poder continuar con este, Importación a la base de datos de archivos Excel y CSV, ahora lo que haremos será usar los metodos que trae laravel Excel para que la carga de archivos muy grandes a la base de datos no de convierta en un cuello de botella y se pueda hacer un uso mas optimo de la memoria. Para elo en nuestra clase ProductsImport del post anterior hay que implementarle las clases WithBatchInserts y WithChunkReading quedando el codigo del archivo de esta manera:

<?php

namespace App\Imports;

use App\Models\Product;
use Illuminate\Support\Collection;
use Maatwebsite\Excel\Concerns\ToCollection;
use Maatwebsite\Excel\Concerns\WithChunkReading;
use Maatwebsite\Excel\Concerns\WithBatchInserts;
use Maatwebsite\Excel\Concerns\ToModel;


class ProductsImport implements ToModel, WithBatchInserts, WithChunkReading
{
    /**
    * @param Collection $collection
    */
    public function model(array $row)
    {
        
            if($row[0] != 'PRODUCT'){

                return new Product([
                    'reference' => $row[0],
                    'category ' => $row[1],
                    'cost'      => $row[2],
                    'quantity'  => $row[3],
                ]);

            }
                    
        
    }

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

    public function chunkSize(): int
    {
        return 10000;
    }
}
Importación por lotes de grandes archivos Excel o CSV
Importación por lotes de grandes archivos Excel o CSV

¿Necesitas ayuda, no dudes en contactar? jaronu42[@]gmail.com. Saludos!!