Usando Bases de Datos Microsoft Access en Linux

alfredo publicó esto el 21/09/09 en Bases de Datos, Herramientas. 3 comentarios

microsoft_access_2002
Existen en la actualidad una amplia gama de sistemas legacy que utilizan MS Access como repositorio de datos, si bien hay un sinnúmero de razones por las cuales se desaconseja utilizar MS Access como aplicación de base de datos, es cierto que hay que tener en cuenta que MS Access fué diseñado a medidados de los 90 para hardware i386 y que todavía existe muchas aplicaciones bien escritas que todavía lo utilizan.

Hoy les voy a presentar un conjunto de herramientas y librerías que permiten la interacción con bases de datos MS Access desde Linux, estas herramientas están agrupadas dentro del proyecto MDB Tools.

Requisitos

Para este pequeño tutorial vamos a utilizar un base de datos de ejemplo: Music Collection Database disponible para descargarse en el sitio de Microsoft, este archivo viene en formato .cab así que vamos a instalar una aplicación para poder descomprimirlo.

sudo aptitude install cabextract
cabextract 01018629.cab

Luego instalamos el paquete mdbtools, el cual consta también con una herramienta gráfica lo suficientemente amigable como para que no necesite un post dedicado a la GUI, para este ejemplo nos vamos a centrar en las herramientas de líneas de comando, primero instalamos mdbtools:

sudo aptitude install mdbtools

Visualizar las tablas de una base de datos

Para listar todas las tablas de una base de datos utilizamos el comando mbd-tables:

mdb-tables 01018629.mdb
Music Categories Recording Artists Recordings Switchboard Items Tracks

Es una práctica común cuando se diseñan bases de datos en MS Access es la utilización de nombres de tablas con espacios intermedios, mdb-tables nos permite determinar un separador al listar las tablas para ver bien los nombres de las tablas:

>mdb-tables -d '|' 01018629.mdb
Music Categories|Recording Artists|Recordings|Switchboard Items|Tracks|

Obteniendo el DDL de la base de datos

Para obtener el DDL (Data Definition Language) de una tabla o de toda la base de datos podemos utilizar mdb-schema, esto será de suma utilidad si queremos migrar la base de datos a otro entorno como MySQL o PostgreSQL.

mdb-schema -T 'Recording Artists' 01018629.mdb
DROP TABLE Recording Artists;
CREATE TABLE Recording Artists
(
RecordingArtistID	 Long Integer,
RecordingArtistName	 Text (100),
Photograph	 OLE (255),
Birthdate	 DateTime (Short),
Birthplace	 Text (100),
DateofDeath	 DateTime (Short),
Notes	 Memo/Hyperlink (255)
);

Exportando los datos

mbd-export nos sirve para exportar a formato CSV los datos de una tabla:

mdb-export 01018629.mdb 'Recording Artists'
RecordingArtistID,RecordingArtistName,Photograph,Birthdate,Birthplace,DateofDeath,Notes
1,"Karen Archer",,"","Greenville, SC","",""
2,"Deborah Poe",,"","New Orleans, LA","",""
3,"George Jiang",,"","Traveler's Rest, SC","",""
4,"Stefan Delmarco",,"03/15/65 00:00:00","Ann Arbor, MI","",""

Si ejecutamos mbd-export sin parámetros podemos ver más opciones de exportación.

Seleccionando y manipulando datos de la base de datos

Si lo que necesitamos es filtrar datos de la base de datos con mdb-sql podremos realizar consultas en SQL a la base de datos de manera dinámica a través de una consola. La consulta luego de ingresar la sentencia GO

mdb-sql 01018629.mdb
1 => select RecordingArtistName from "Recording Artists" where Birthplace like 'New%'
2 => go
+----------------------------------+
|RecordingArtistName              |
+----------------------------------+
|Deborah Poe                       |
+----------------------------------+
1 Row retrieved
1 =>

3 comentarios

Trackbacks and Pingbacks


Dejá un comentario

Imagen CAPTCHA CAPTCHA Audio
Refrescar imagen