Categorías
Access GNU/Linux Microsoft

Leer archivos Access desde Linux con mdbtools

El formato .mdb de Microsoft Access es propietario y su uso se restringe a los entornos de trabajo Windows, lo cual implica no solo tener el sistema operativo de Microsoft sino además haber comprado una licencia de Office. Al no poder trabajar de forma directa con ellos en Linux, ya existen aplicaciones que nos permiten leerlas, como son por ejemplo DBeaver o Kexi. Sin embargo, puede que no necesitemos un programa tan completo, sino que solo nos interese extraer la información contenida en el Access para luego procesarla por otros medios. Para este cometido lo más sencillo es utilizar la herramienta mdbtools. Aunque podemos bajarnos el código y compilarlo, es más fácil utilizar los gestores de paquetes de cada distribución Linux, por ejemplo en Fedora o cualquier distribución basada en Red Hat la forma de hacerlo sería:

sudo dnf install mdbtools

Una vez instalada, tenemos a nuestra disposición varios comandos, uno de los cuales es mdb-export, que nos permite exportar una de las tablas contenidas dentro del archivo Access a un fichero de texto plano con formato csv de esta forma:

mdb-export nombre_Access nombre_tabla > nombre_fichero.csv 

Donde nombre_Access es el nombre del ficho Access; nombre_tabla es el nombre de la tabla dentro del Access de la que queremos obtener los datos; y nombre_fichero.csv es el nombre del fichero de texto en el que queremos guardar la información. Existen más opciones para la exportación de datos que pueden consultarse simplemente tecleando “mdbtools” en la consola:

En caso de que no conozcamos a priori los nombres de las tablas incluidas en el Access, podemos obtenerlos con el comando:

mdb-tables nombre_Access

Existen más comandos que podemos usar, y podemos obtener una lista de ellos si tecleamos “mdb-” en la consola y pulsamos el tabulador. El que puede sernos bastante útil es mdb-schema, que nos devuelve no solo las tablas que tenemos en el Access sino también los campos que tiene cada una y su formato.

Otra de las buenas características de mdbtools es que puede usarse también desde un script de R, si previamente instalamos el paquete Hmisc en R con:

install.packages("Hmisc")

Con él instalado podemos usar el comando:

mdb.get(RutaAlFicheroAccess, "nombre_tabla") 

Esta opción de carga de datos desde R me parece más interesante que la utilización de los paquetes basados en Rodbc, porque dichos paquetes necesitan que la arquitectura del sistema (32 o 64 bits) sea la misma que la del Access, lo cual puede ser un problema.