Aprende Java Aprende Php Aprende C++ Aprende HTML 5 Aprende JavaScript Aprende JSON Aprende MySQL Aprende SQLServer Aprende Visual Basic 6 Aprende PostgreSQL Aprende SQLite Aprende Redis Aprende Kotlin Aprende XML Aprende Linux VSC Aprende Wordpress Aprende Laravel Aprende VueJS Aprende JQuery Aprende Bootstrap Aprende Netbeans Aprende Android
Sigueme en Facebook Sigueme en Twitter Sigueme en Instagram Sigueme en Youtube Sigueme en TikTok Sigueme en Whatsapp
Home / Desarrollo Web / Importar datos CSV a base de datos usando Laravel Seeder

Importar datos CSV a base de datos usando Laravel Seeder

Por jc mouse viernes, mayo 30, 2025

En este post veremos paso a paso como importar registros de archivos *.CSV a una base de datos (MySQL por ejemplo) usando Laravel Seeder.

Usaremos Laravel Seeder para extraer datos de un archivo *.CSV.

Paso 1. Crea tu archivo CSV

El archivo se llama provinces.csv, importante lo debes guardar como UTF-8 sin BOM (Byte Order Mark).

Es buena practica guardar el archivo en una carpeta «data» dentro de la carpeta «databases» de Laravel.

Para hacer mas facil el trabajo, los nombres de las columnas del CSV deben ser las mismas que los nombres de las columnas del tu tabla.

code;name
BOL-001;Oropeza
BOL-002;Azurduy
BOL-003;Zudáñez
BOL-004;Tomina
BOL-005;Hernando Siles
BOL-006;Yamparáez
BOL-007;Nor Cinti
BOL-008;Belisario Boeto
BOL-009;Sud Cinti
BOL-010;Luis Calvo

Paso 2. En Laravel crea un Seeder de la siguiente manera:

php artisan make:seeder ProvincesSeeder

Paso 3. En el archivo Seeder pega el siguiente código:

<?php

namespace Database\Seeders;

use Illuminate\Database\Console\Seeds\WithoutModelEvents;
use Illuminate\Database\Seeder;
use Illuminate\Support\Facades\DB;

class ProvincesSeeder extends Seeder
{
    const TABLE = 'provinces';
    const CSV_FILE = 'provinces';
    const DELIMITER_CSV = ';';

    /**
     * Run the database seeds.
     */
    public function run(): void
    {
         // Ruta al archivo CSV
        $csvFile = database_path('data/'.self::CSV_FILE.'.csv');
        // Abre el archivo CSV en modo lectura
        if (($handle = fopen($csvFile, 'r')) !== FALSE) {
            // Lee la primera fila (encabezados) para mapear las columnas
            $header = fgetcsv($handle, 1000, self::DELIMITER_CSV);                        

            while (($row = fgetcsv($handle, 1000, self::DELIMITER_CSV)) !== FALSE) {
                // Combina los encabezados con los datos de la fila
                // Esto crea un array asociativo como ['name' => 'Juan Perez', 'email' => '...', etc
                $data = array_combine($header, $row);                        
                $data['created_at'] = now();
                $data['updated_at'] = now();

                // Inserta los datos en la base de datos                
                DB::table(self::TABLE)->insert($data);                
                //Province::create($data);
            }
            fclose($handle);
        } else {
            $this->command->error("No se pudo abrir el archivo CSV: {$csvFile}");
        }
    }
}

Paso 4. Ejecuta la migración:

php artisan migrate:refresh --seed

obtenemos:

Enjoy!!!

Tags

Artículos similares

Bolivia Segura: La página web oficial del gobierno para informar sobre el Coronavirus

El gobierno constitucional de Bolivia a la cabeza de la presidente Yaninne Añez y ante la confirmación de dos casos posi[...]

Google ingresa a la carrera de los Chatbot con Bard

El gigante tecnologico de Google ingresa a la competencia de los ChatBot con Inteligencia Artificial a traves de Bard. B[...]

Command: La Vía Rápida para Automatizar Backups (mysqldump)

Los comandos (Command) en Laravel son scripts PHP que se ejecutan a través de la interfaz de línea de comandos Artisan p[...]

BuilderAI la startup que simulaba ser una Inteligencia Artificial

Builder.ai era una startup tecnológica que fundada por Sachin Dev Duggal, este se promocionaba como una plataforma de de[...]

Localingual: Voces de todo el mundo a tu alcance

Cada día aparecen cientos sino es que miles de nuevos sitios web en el mundo, pero son muy pocos las webs verdaderamente[...]

Envío de correo HTML con php

PHP cuenta con la función mail que nos permite el envío de correo desde nuestro servidor web bool mail ( string $to , st[...]