2008/12/13

MDB en Linux

A pesar de que se vive mucho mejor sin Windows, el uso extendido de ciertas aplicaciones dependientes de este sistema operativo hacen que los usuarios se encuentren a merced de los antojos comerciales de Microsoft. Un caso bien conocido son las herramientas de CAD que no acaban de encontrar su competidor en el mundo FLOSS (Free Libre Open Software Libre). Pero quizás, es la suite ofimática Microsoft Office la que más impide el paso de los usuarios al uso de Linux.
OpenOffice es una alternativa plena para substituir a la suite ofimática de Microsoft, pero a veces la conversión de formatos no es satisfactoria y si hay macros de por medio menos. De todos modos, yo me resisto a volver a Windows y existen formas de lograr trabajar a gusto sobre Linux a pesar de la traba de los formatos propietarios.
En mi caso actual me encuentro con una "base de datos" Access mdb con muchísimas tablas que quería poder manejar desde Linux. Para ello existe mdbtools que es un conjunto de herramientas para leer mdb. Se puede instalar mediante el comando:
$sudo aptitude install mdbtools
Para listar las tablas de un mdb podemos usar el comando:
$mdb-table -1 nombrefichero.mdb
Para exportar a CSV sin comillas y separado por comas he usado la siguiente sentencia:
$mdb-export -S -q '' -d ';' -D '%Y-%m-%d' nombrefichero.mdb nombretabla > nombretable.csv
Y para exportar todas las tablas a la vez...

IFS=$'\n'
for table in `mdb-tables -1 nombrefichero.mdb`; do
echo '**** Exporting table: '$table '****'
mdb-export -S -q '' -d ';' -D '%Y-%m-%d' nombrefichero.mdb $table > $table'.csv'
echo 'Done.'
done
***** Actualización *****
Se puede abrir un MDB desde openoffice conectándose mediante ODBC. La receta:
http://wiki.services.openoffice.org/wiki/Connecting_to_Microsoft_Access