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.
- glib
- readline
- bison
- flex
- unixODBC
- GNOME 2.0
- libglade
- wordexp
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:
--browse, -b
: no presenta los nombres de los campos y presenta un registro por cada línea separado por:
.--delimiter, -d
: Sirve para cambiar el separador entre registros--description, -e
: Describe los campos de la base de datos--info -i
: muestra información sobre la base como el número de registros y la longitud de cada registro.
$ 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