Ubuntu dans un environnement professionnel - le cas MS Access, merci mdbtools
Par Administrateur le mercredi, octobre 10 2007, 08:00 - Planet - Lien permanent
Dès que vous travaillez sur des volumes de données important* avec des tiers (clients, fournisseurs, ...), le format d'échange le plus répandu devient (hélas) le .mdb, le format du SGBD Access édité par Microsoft. Qu'on le veuille ou non, qu'on travaille tous les jours avec mysql ou pas, c'est comme ça... Cela évolue doucement, mais en attendant... '
Souvent, demander un export en csv suffit. Parfois ce n'est pas possible, surtout quand vous dépassez la dizaine de tables... Ou qu'il faudrait attendre à nouveau 2 ou 3 jours l'acheminement du support physique par la Poste...
Alors on s'adapte, et le logiciel libre, via Ubuntu le fait très bien comme d'habitude.
L'objectif : consulter la base Access, et travailler avec MySql (par exemple), parce qu'il n'y a pas de raison de changer d'application juste pour un problème de format.
Les possibilités qui existent sous Ubuntu :
Installer Access dans Wine. (ou plutôt dans son avatar commercial : CrossOver)
Cela fonctionne pas trop mal, mais déjà que le logiciel n'est pas un modèle d'optimisation, sous Wine, ça devient l'horreur... et ça ne résous pas le fait que la dernière fois que vous avez utilisé Access c'était au siècle dernier ...
Utiliser OpenOffice
En principe, OpenOffice/Base sait lire les mdb depuis quelques temps. En principe car cela il semble que cela dépende aussi de la version d'Access qui a créé la base de données. Mais même quand cela fonctionne, vous n'avez pas vraiment de possibilité d'importer de façon transparente dans un autre SGBD (c'est définitivement le point faible d'OO/Base).
Utiliser un site en ligne : http://www.mdb2mysql.com/.
Pratique, mais avez vous vraiment envie de communiquer vos données ? (et peu efficace si vous avez 1Go de base à uploader sur le serveur...)
Utiliser les mdbtools (paquet disponible dans ubuntu)
Le paquet mdbtools mets à disposition un certain nombre d'outils en ligne de commande pour :
- exporter des tables : mdb-export
- récupérer le schéma : mdb-schema
- lister les objets : mdb-tables
L'interface graphique existe aussi dans le paquet mdbtools-gmdb : gmdb2.
Légère, elle permet de rapidement visualiser le contenu de la base et de faire la plupart des opérations courantes.
Pas mal, mais _moins bien que si c'était mieux_ car :
- l'exportation du schéma au format mysql n'est pas très précise (le format date, par exemple, ou le nom des tables...)
- cela ne résous pas vraiment la question de rapidement pouvoir exploiter le contenu de la base dans mysql.
Utiliser une solution '''quick & dirty - 2 heures''' en perl (qui utilise les mdbtools)
- lister le contenu de la base
- exporter chaque table en csv
- générer un fichier sql utilisable depuis mysql pour créer le schéma et importer les données.
usage : ./mdb2mysql.pl nom_du_fichier.mdb
... ce qui générera les fichiers csv et un fichier mdb2mysql.sql qu'il suffit après d'éxecuter pour importer la base.
''NB : mon script en perl n'a aucune prétention, il est même plutôt
hideux 
Utiliser la même chose en plus fini, découvert juste après l'écriture de ce billet :
http://www.enobis.com/sw/mdb2mysql/
En conclusion :
- les solutions en consultations sont très nombreuses et de plus en plus simple à mettre en oeuvre.
- la modification native des formats mdb n'est pas encore réellement possible (mais est ce souhaitable ?)
- il est relativement aisé de convertir une base access en une base MySql (ou autre chose), ce qui permet définitivement de s'affranchir de ce format...
___
* : (Le volume important est bien sur relatif : disons quelques centaines de milliers de lignes.)