Cargando



Importación de CSV con Laravel

En este tutorial vamos a ver como importar CSV de Laravel apoyándonos en el ORM Eloquent para hacer la inserción de los datos de forma más sencilla.



ago 08 2014 23:18
Avanzado
ago 10 2014 12:21
Cuando construimos aplicaciones que deben manejar muchos datos, a veces no es suficiente con tener un formulario de carga de información, hay veces en las cuales necesitamos mover un gran volumen de datos de manera automatizada.

Para ello contamos con muchas opciones, sin embargo la opción más sencilla es hacer una importación de un archivo CSV, este tipo de archivos nos permiten organizar los datos separados por coma o punto y coma, con ello en un archivo de texto plano podemos almacenar muchos datos, la ventaja es que podemos generar datos en programas como Excel para poder luego ser trasladados a nuestra aplicación.

Generar el Archivo


Generar un archivo CSV es algo bastante sencillo, basta con abrir un editor de textos, colocar varias líneas con datos separados por comas, lo importante que debemos cuidar acá es que mantengamos la misma cantidad de valores por fila, así lo tendremos más fácil a la hora de procesar el archivo, veamos un ejemplo:

laravel_import_csv.jpg


Tenemos un listado de personajes y películas de ciencia ficción, con esto podremos tener una idea de lo que es un CSV y si ya la teníamos podremos tener un set de datos para las pruebas. Esto lo podemos guardar en un archivo .csv para poder utilizarlo luego.

Hacer la Importación


Para hacer la importación debemos seguir unos pequeños pasos, estos los podemos adaptar a la realidad de nuestra aplicación, son bastante sencillos de seguir:

1- Debemos crear una migración para generar la tabla en la cual vamos a importar los datos, en este caso siguiendo la temática de los programas de ciencia ficción, vamos a correr el siguiente comando de artisan:

php artisan migrate:make create_scifi_table

2- En el método up() de nuestro archivo de migración generado vamos a colocar los atributos de nuestra tabla, esto debería ser algo similar a lo siguiente:




laravel_import_csv2.jpg


3- Una vez que tenemos nuestra migración lista y ejecutada , debemos entonces crear el modelo que herede de Eloquent para poder acceder a las funcionalidades de base de datos:

class Scifi extends Eloquent {
protected $table = 'scifi';
					 }

4- Acto siguiente creamos la vista en una ruta, con ello podremos procesar nuestros datos, para ello en el archivo routes.php vamos a crear una ruta que obtenga del método get lo que necesita, luego ahí abriremos el archivo en modo de lectura, recorreremos su contenido y haremos un foreach() del contenido, así por cada línea vamos a obtener las columnas y las podremos almacenar en nuestro modelo, finalmente guardamos, y luego hacemos una consulta de todos los datos de la tabla. Veamos en la siguiente imagen como queda esta ruta:




laravel_import_csv3.jpg


Con esto ya habremos importado de forma exitosa el archivo CSV en nuestra base de datos, es importante que mantengamos una estructura uniforme, ya que de lo contrario vamos a tener que realizar muchas validaciones incorporando elementos de mayor complejidad que harán de la estructura de nuestra aplicación engorrosa y difícil de mantener.

¿Te ayudó este Tutorial?


Sin comentarios, sé el primero!

No esperes más y entra en Solvetic
Deja tus comentarios y aprovecha las ventajas de la cuenta de usuario ¡Únete!

X