domingo, 6 de abril de 2014

Convertir un Archivo de Excel a una Base de Datos MySQL

Muchos usuarios de MySQL en Linux se han visto en la necesidad de transferir los datos de un archivo de Microsoft Excel a una base de datos MySQL, a continuación describimos paso a paso el proceso.

1. Acomode y prepare los datos de Excel. Debe eliminar la fila de cabeceras o campos, de esta forma sólo tendrá los datos como se ve a continuación, de preferencia empezando desde la celda A1. 



2. Guarde el archivo como .CSV, dentro de la sección Archivo, elija Guardar Como, ingrese un nombre para el archivo y elija en Tipo de Archivo, CSV (delimitado por comas), este formato muestra los valores separados por comas.


Una vez guardado el archivo CSV procedemos a abrirlo y verificamos que efectivamente los valores están separados por comas.


4. Crear la base de datos que tendrá los datos de nuestro archivo CSV. Para ello primero ingresamos a la base de datos en Linux.


Una vez autenticado con un password estaremos dentro de MySQL. Seguidamente creamos la base de datos con el siguiente comando. El nombre de mi base de datos es main.


Luego creamos la tabla, en mi caso la llamé asegurados. Esta tabla debe tener dos campos, el primero se llama nombres_apellidos de tipo varchar con 128 caracteres no nulo; y el segundo campo se llama dni con un tipo varchar de 8 caracteres no nulo.




5. Copiar el archivo CSV al directorio de la base de datos. Lo primero es salir de MySQL y encontrarse en el entorno de usuario de Linux, luego copiar por algún medio el archivo CSV al servidor Linux MySQL, puede copiarlo a través de una memoria flash, usar scp, u otra forma para tener el archivo CSV dentro de la máquina donde reside instalado MySQL.

Como se ve en la siguiente imagen, me aseguré de que el archivo CSV que generé (base_excel.csv) se encuentre en mi directorio de usuario, yo usé WinSCP para copiar el archivo CSV de Windows a Linux.


Luego es necesario copiar el archivo CSV desde mi directorio de usuario a el directorio de la base de datos que acabo de crear (main). Como se aprecia en la siguiente imagen es necesario copiar el archivo en el directorio /var/lib/mysql/main]/, que es el directorio de la base de datos que acabo de crear.


6. Transferir los datos del archivo CSV dentro de la base de datos. Para esto tenemos que entrar nuevamente a MySQL y usar la base de datos main.


Una vez allí es necesario ingresar la siguiente línea, lo que hace simplemente es cargar los datos dentro del archivo base_excel.csv (load data infile 'base_excel.csv') dentro de la tabla con el nombre asegurados (into table asegurados); y finalmente indicar a MySQL que los campos terminan en coma (fields terminated by ',') y las líneas terminan en el salto de línea (lines terminated by '\n'). 



Una vez hecho esto verificamos los contenidos de nuestra tabla asegurados con el siguiente comando.


Los resultados son satisfactorios.


Con esto hemos terminado!

Me he basado en el siguiente post:

http://www.puntogeek.com/2011/06/24/de-excel-a-mysql-facilmente-y-sin-romperte-la-cabeza/

Allí usa phpmyadmin, yo uso la línea de comandos.

Saludos cordiales.