domingo, 8 de junio de 2014

Como importar registros de Excel a MySQL usando CSV

Si te has encontrado en la situación en que necesitas importar muchos registros que  se encuentran en excel a MySQL este post puede ser de utilidad. Utilizando el formato CSV puedes lograr importar tus datos desde excel.

Que es CSV?

Según Wikipedia, son un tipo de documento en formato abierto sencillo para representar datos en forma de tabla, en las que las columnas se separan por comas (o punto y coma en donde la coma es el separador decimal: España, Francia, Italia...) y las filas por saltos de línea.

Ya conociendo más o menos que es el formato CSV, tenemos que tener nuestro Excel con los registros a exportar, en este caso usare unos cuantos registros. Cabe aclarar que en las pruebas para números que están separadas las cifras de miles por coma debemos editar el Formato numérico y seleccionar “General”.



Ahora necesitaremos guardar este Excel con un formato CSV:



Si abrimos el archivo CSV miraremos los registros separados por comas de la siguiente forma:



Cada registro separado por coma será un dato a importar a la base de datos.

En los archivos CSV la primera fila indica las columnas de las tablas, por lo que procederemos a eliminar esta fila, ya que solo nos interesan sus registros. También en mis pruebas el id debía ser colocado en el CSV, por lo que en Excel podemos colocar un campo id también y agregarle sus valores.



Forma 1: Funciona en phpMyAdmin y Workbench:

Nuestra tabla estará hecha de la siguiente manera: 
create table empleados(
    id_empleado int primary key not null auto_increment,
    nombre varchar(15),
    apellido varchar(15),
    edad int,
    salario float
);
Para este ejemplo introduciré el archivo a importar en C: en una carpeta llamada “import”. El código en mi caso sería: 



Si obtienes el siguiente error:



Es por la copia del codigo, el codigo erroneo se mira asi (notar el string de la ruta no esta colorido):



El resultado en phpMyAdmin:


Forma 2: En el Workbench:

Para el Workbench existe un botón para importar el archivo (la única forma que la note es haciendo un select a la tabla xD):



Luego seleccionamos el botón para importar y seleccionamos el archivo:



Ahora debes seleccionar aplicar, en la ventana de la consulta:


Luego aplicar y finalizar:


 

Un select y listo.

 

Espero que sea de utilidad.


Saludos.

16 comentarios:

  1. Hola,
    una duda si los datos tienen texto con comas como lo importariamos?

    ejemplo:
    nombre apellido comentario
    --------------------------------------------
    antonio lopez una duda, si los datos tienen texto con comas, ¿como lo importariamos?

    ResponderEliminar
    Respuestas
    1. Hola buen dia, gracias por pasar, en este caso el csv se comporta de forma "inteligente" pues el te agrega entre comillas dobles las celdas donde contengas comas. El problema ocurre en los numeros, en la separacion de miles por coma, la solucion radica en jugar con los formatos de celda, tendras que agregar un formato de numero que deje solamente los decimales separados por un punto para evitar errores en la importacion.

      Esto lo he realizado con worckbench y no da problemas, Saludos.

      Eliminar
    2. un ejemplo rapido de csv para este caso quedaria asi :

      3,"elvin, guti probando, csv",1.20,1000.00,

      espero te pueda ayudar!

      Eliminar
    3. eres lo maximo hermano gracias me sirvio la respuesta :D

      Eliminar
  2. estimados,lo estoy dentro del hosting por phpmyadmin y me sale este error #13 - Can't get stat of '/var/lib/mysql/C:/BDD.CSV' (Errcode: 2)

    ResponderEliminar
  3. estimados,lo estoy dentro del hosting por phpmyadmin y me sale este error #13 - Can't get stat of '/var/lib/mysql/C:/BDD.CSV' (Errcode: 2)

    ResponderEliminar
    Respuestas
    1. Hola, posiblemente no estas especificando bien la ruta del archivo. Deberás también subir el archivo al server, quizas con ftp. Saludos.

      Eliminar
    2. Hola, posiblemente no estas especificando bien la ruta del archivo. Deberás también subir el archivo al server, quizas con ftp. Saludos.

      Eliminar
  4. hola para los datos que tiene 0 al inicio como cargar porque al cargar se elimina el 0

    ResponderEliminar
  5. hola para los datos que tiene 0 al inicio como cargar porque al cargar se elimina el 0

    ResponderEliminar
  6. Este comentario ha sido eliminado por el autor.

    ResponderEliminar
  7. Hola, tengo un problema y al parecer lo que pasa es que no me esta reconociendo los '\n' por que me sale error de FK del ultimo campo, pero solo si pongo 2 o mas registros, cuando dejo en el .csv solo un registro si me lo inserta bien, alguien sabe que puedo hacer?
    Gracias.

    ResponderEliminar
  8. hola chicos. les hago una consulta, necesito pasar un excel .xlsm a una base de datos phpmyadmin. entiendo que primero lo tengo que pasar a .csv y despues a la bd. el gran problema es que tiene que ser automatico y refrescar cada 1 minuto ya que los datos del excel estan cambiando dinamicamente. no entiendo mucho de este lenguaje, si alguien me puede ayudar le agradeceria muchisimo.

    ResponderEliminar
    Respuestas
    1. Quizás un cron job te ayuda a realizar eso.

      Saludos.

      Eliminar
  9. Saludos, ayuden por favor, estoy usando mysql con workbench y he hecho de todo y no puedo importar los datos, me sale error 1290

    ResponderEliminar
  10. Saludos, ayuden por favor, estoy usando mysql con workbench y he hecho de todo y no puedo importar los datos, me sale error 1290

    ResponderEliminar