Migracion De Access Y dBase a SQL

Muchas veces los clientes o las fuentes de datos abiertas tienen sus datos en formatos ya arcaicos, como pueden ser archivos DBF o MDB.

Breve descripción de los formatos

El formato MDB

El formato MDB es un formato de bases de datos utilizado por Microsoft Access.

El formato DBF

Este formato era utilizado por Visual Fox Pro, dBase, Microsoft Access, Microsoft Excel y algunas otras aplicaciones generadas con estos programas.

Accediendo a los datos

Para poder acceder a los datos, ya sea convertirlos en CSV o utilizarlos desde python o la línea de comandos necesitamos programas que los puedan leer. Estos programas existen en línea de comandos y como bibliotecas de linux.

Uso de mdbtools para extraer bases de datos en Access a CSV

mdbtools es una suite de herramientas para acceder, exportar y consultar bases de datos de MS Access en Linux o Mac.

Lo primero que necesitamos es instalar la suite de programas en Ubuntu

$ sudo apt-get install mdbtools

las siguientes herramientas de línea de comandos se instalarán:

Nombre Descripción
mdb-tables lista las tablas de la base de datos
mdb-schema exporta el esquema de la base en formato SQL
mdb-export exporta la tabla de la base
mdb-ver muestra la versión de Access de la base
mdb-sql permite hacer consultas al archivo

MDB Tools tiene ciertos requerimientos que deben instalarse antes de poder usarlo adecuadamente.

Lo primero que necesitamos hacer es ver cuales son las tablas que necesitamos y para eso vamos a listarlas todas con mdb-tables

$ mdb-tables <database>.mdb

mdb-tools permite exportar las tablas en CSV o SQL, para exportar los datos en CSV utilizamos el siguiente comando:

$ mdb-export <database>.mdb <table_name> > <export>.csv

Para exportarlos como SQL se necesita usar la bandera -I y la bandera -R para terminar los comandos con ;

$ mdb-export -I <database>.mdb <table_name> > <export>.sql

Esto nos genera los archivos que necesitamos.

Uso del comando dbview para extracción de archivos en formato DBF

Para leer el archivos DBF en linux podemos utilizar el comando dbview O crear un script utilizando el módulo dbread. Originalmente el comando dbview se creó para poder procesar en Unix archivos de dBase en sus versiones III o IV. De su página man podemos ver que tiene diferentes opciones:

$ dbview test.dbf 

Este comando presenta la base en modo de exploración presentando los registros uno después de otro con un campo por línea y el nombre del campo al principio.

Control    : 15090160001
Ent res    : 09
Mpo res    : 014
Rel emb    : 0
Hora def   : 09
Min def    : 30
...

Para generar el archivo en formato csv podemos utilizar el siguiente comando:

$ dbview -b -d',' DEF98.DBF > ../../csv_data/DEF98.csv