Importar archivos DBF a MySQL

Pues bien, otro post provocado por una necesidad del curro… esa necesidad me ha obligado a googlear un ratito y por último, he aquí el resultado.

La cosa está en que me han pasado unos archivos en formato dbf y para poder hacer el tratamiento necesario necesitaba poderlos importar a MySQL. La solucion está en dbf2mysql, programa que de una manera bastante sencilla se encarga de hacer la importación a la base de datos MySQL.

Los flags más importantes que nos ofrece dbf2mysql són los siguientes:

  • -h indica server donde conectarse
  • -U usuario MySql
  • -P password MySql
  • -d base de datos donde se insertaran los datos
  • -t tabla donde se insertarán los datos
  • -c crea la tabla si no existe
  • -cc crea la tabla, pero no inserta registros
  • -f traduce los nombres de campo a minúsculas
  • -n no se agrega ‘NOT NULL’ en las sentencias de creación de tabla
  • -o exporta solo los campos listados (Ej. -o field1,field2…)
  • -s substituye permite cambiar nombres de campos (Ej. -s oldName1=newName1,oldName1=newName1)
  • -i lista de campos a indexar. Genera UN indice por campo (Ej. -i field1,field2…)
  • -r quita espacios antes y después de datos alfanuméricos
  • -v muestra detalles de la conversión
  • -vv muestra más detalles
  • -vvv incluye informe de progreso

Los pasos que he siguido para hacer la importacion són:

1) Instalo dbf2mysql, en mi caso desde Ubuntu:

sudo apt-get install dbf2mysql

En cualquier caso, nos podemos bajar el programa para sistemas Unix de Source Forge

2) Creo una base de datos MySQL vacia:

mysql -u [DBUSER] -p -e "CREATE DATABASE `[DBNAME]`"

3) Por último lanzamos el siguiente comando para indicarle que importe el archivo dbf a la base de datos local, en la tabla [DBTABLE] de la base de datos [DBNAME], entrando con el usuario [DBUSER] y el password [DBPASS]. Mediante el flag -c forzamos a que cree la tabla si no existe y con -f le indicamos que traduzca los nombres de los campos a minusculas:

dbf2mysql -h localhost -U [DBUSER] -P [DBPASS] -d [DBNAME] -t [DBTABLE] -c -f /path/to/file/miTabla.dbf

Es importante tener en cuenta que esta importación no tendra en cuenta algunos atributos importantes de la tabla como, por ejemplo, los campos autoincrementales. Si tenemos algun problema de este estilo, es recomendable crear la estructura de la tabla antes de realizar la importación.

6 thoughts on “Importar archivos DBF a MySQL

  1. Esta clase de posts son los que muy pocas veces se usan pero cuando los necesitas te facilitan la vida como no tienes idea. Buen post y espero encontrarme con algún otro tuyo 😀 Hasta pronto

  2. Este programa se me hizo muy interesante ahora que requiero mover los datos de una tabla dbf a mysql, lo que no me agrada es que me esta enviando información completa en datos decimales, solo envía la parte entera y la parte decimal se pierde, he tratado crear la tabla antes para especificar el tipo de dato pero sigue pasando lo mismo, ¿alguna sugerencia para poder enviar todo el numero a MySQL??

    SO. Debian lenny, MySQL 5.0.51a, dbf2mysql 1.14.

    pruebas# dbf2mysql -h localhost -U admon -P shaggy -d compras -t producto -c -f /root/producto.dbf

  3. Amigos… disculpen por favor.. pero tienen algo de esta solución para importar .dbf a Mysql (workbench) sobre windows?? mil gracias! tengo un problema gigante con este tema!..

  4. Muy útil en caso de necesidad.
    Lo único que veo que le falta es poder especificar la codificación en la que quieres importar.

    Gracias!

Comments are closed.