Bien qu’à l’origine d’ODBC dès 1992 (Open Database Connectivity), Microsoft n’a jamais fourni de drivers Linux pour ses bases de données Access. Entre drivers commerciaux coûteux et solutions incomplètes, l’exploitation d’une base de données Access sous Unix reste assez difficile.
L’incomplet MDB Tools
http://mdbtools.sourceforge.net/install/
C’est probablement la première solution qu’on rencontre lorsqu’on cherche à exploiter une base Access sous Linux.
MDB Tools fournit plusieurs commandes très utiles :
- mdb-tables : list tables in the specified file
- mdb-schema : generate schema DDL for the specified file
- mdb-export : generate CSV style output for a table
- mdb-ver : display the version of the specified file
- mdb-header : support for using MDB data in C
- mdb-parsecsv : support for using MDB data in C
- mdb-sql : command line SQL query tool
Le gros inconvénient est le support très limité des requêtes SQL. Tant qu’on ne doit réaliser que des SELECT simples, MDB Tools répond parfaitement. Mais il est incapable de réaliser des jointures par exemple.
Le coûteux Easysoft ODBC-Access driver
http://www.easysoft.com/products/data_access/odbc-access-driver/index.html
Recommandé par UnixODBC, le driver ODBC-Access, développé et commercialisé par la société EasySoft, est la solution idéale pour requêter directement un fichier Access sur Linux.
Son installation est assez simple et il peut exécuter la plupart des requêtes SQL, mêmes les plus complexes.
Principal inconvénient : son prix. La licence pour une utilisation sur un seul poste démarre à 650€.
L’alternative mdb-sqlite
https://code.google.com/p/mdb-sqlite/
MDB-SQLite n’est pas un driver ODBC mais un convertisseur Access to SQLite. Son utilisation est différente des deux drivers ODBC ci-dessus mais son intérêt réside dans l’utilisation de SQLite.
SQLite est un système de gestion de base de données SQL sans serveur, qui stocke les données d’une base dans un seul fichier autonome.
En utilisant les fonctions SQLite de PHP, on peut lancer des requêtes directement sur le fichier SQLite.
MDB-SQLite est une archive Java. Voici un exemple de son utilisation :
java -jar dist/mdb-sqlite.jar source.mdb output.sqlite