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!!!
En un post anterior conocimos una herramienta Open Source con un conjunto de herramientas para el trabajo con imágenes e[...]
Los archivos CSV (del inglés comma-separated values – separados por comas) son un tipo de documento en formato abi[...]
Los cursos online se han convertido en algo común en nuestros días y las aplicaciones que hay en la nube para realizar r[...]
El procesamiento por lotes (batch processing) en PHP es la ejecución de tareas que implican una gran cantidad de datos u[...]
En un post anterior vimos como usar la herramienta XJC del JDK para generar clases java desde esquemas XSD (XML Sch[...]
Cuando creamos reportes en iReport que son un poco complicadas o reportes personalizados, osea, tratando de evitar el cl[...]