Usando Bases de Datos Microsoft Access en Linux
alfredo publicó esto el 21/09/09 en Bases de Datos, Herramientas. 3 comentarios
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 =>
Muy buen post, hacerlo con odbc trae sus complicaciones
Publicado el 22 Septiembre 2009 a las 08:24. Permalink.Muy util
Publicado el 22 Septiembre 2009 a las 08:26. Permalink.Excelente articulo!
Publicado el 22 Septiembre 2009 a las 08:54. Permalink.