Importar datos CSV desde MySQL.

Muchos me han preguntado como introducir datos de una hoja de cálculo en una base de datos MySQL.

Hay muchos scripts por ahí que hacen el trabajo, incluso podemos diseñar algo en PHP o ASP para hacerlo, pero a mi me gusta hacerlo todo de forma “distinta” así que aquí os voy a proponer una forma nueva.

Se basa en crear una tabla nueva con el motor de almacenamiento de datos CSV y después modificar ese fichero manualmente.

Lo primero que tenemos que hacer es comprobar si nuestro servidor soporta ese motor de almacenamiento. Tal y como expliqué en la entrada dedicada al motor federated, debemos teclear lo siguiente:

show engines

que nos mostrará todos los motores soportados, si podemos ver CSV, seguimos con el siguiente paso.

A continuacion creamos una nueva tabla con la especificación de los campos que deseemos, especificamos como motor de almacenamiento CSV y guardamos los cambios.

Una vez que hemos creado la tabla ahora podemos llenarla de datos de 2 maneras, por medio de comandos SQL del tipo insert o bien insertandolos manualmente en el fichero CSV. Si queremos hacerlo de esta manera, debemos localizar donde se almacena el fichero CSV, en nuestro caso, bajo la mayoría de las distribuciones linux se guarda en

/var/lib/mysql/nombrebbdd/tabla.CSV

Abrimos ese mismo fichero y metemos ahí los datos que deseemos.

Notas importantes:

Hay que tener cuidado en los campos numéricos puesto que si exportamos nuestro fichero CSV y utilizamos , (coma) como delimitador decimal, el programa lo confundirá y creerá que es otro campo. Para ello, debemos utilizar . (punto). Lo que yo he hecho ha sido cambiar las comas de ese campo por puntos pero muchos programas, al exportar los datos utilizan el punto como separador de miles. Hay que tener cuidado puesto que nos podríamos encontrar con un campo con varios puntos. Para ello lo primero que hay que hacer es eliminar todos los puntos y despues cambiar las comas por puntos.

Una vez terminado todo, podéis cambiar el motor de almacenamiento de la tabla, solo debeis cambiar de CSV a InnoDB o cualquier otro.

Ya tenéis todos los datos exportados en cuestión de minutos y sin utilizar ningún tipo de script ni modo gráfico, solo con nuestro amigo vi.

, , , , ,

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *