lunes, 6 de mayo de 2013

Importar Archivos .DBF a MySQL con dbf2mysql

Recientemente me interesé en consultar algunos datos de algunas personas por X motivos, el problema es que estos datos estaban en una base de datos de FoxPro  .DBF  y ya estaba integrada a un software para windows. Esto no es para mi nada grato ya que no tengo windows instalado en mis computadoras. 

Para poder ver mis datos hice la importación a mysql y con ello hacer sencillas consultas SQL o también hacer una interfaz web para las consultas.

En esta ocasión utilicé el software "dbf2mysql" disponible en la lista de repositorios de ubuntu, y lo instalas super sencillo:

1) Instalar dbf2mysql:

sudo apt-get install dbf2mysql


Las banderas más importantes de dbf2mysql són los siguientes:

    -h indica el servidor a 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

ya teniendo instalado el programa, y sabiendo como se utiliza manos a la obra:

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 /home/villatux/miarchivo.dbf

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 tipo, es recomendable crear la estructura de la tabla antes de realizar la importación.

1 comentario:

Victor Ascencio Hernández dijo...

Hola que tal, gracias por tu guia, tengo una pregunta ya que estoy intentando convertir un archivo, pero solamente me dieron el archivo dbf y cuando ejecuto el comando me dice que couldn't find required memo data file: miarchivo.FPT - (2): No such file or directory
Couldn't open xbase-file miarchivo.DBF,
alguna sugerencia?