Bon alors qu'est-ce que j'ai mal fait ? Comment je peux créer le lien
entre ma base de données access base.mdb et ce truc ? Comment je peux
faire des requêtes là-dedans ?
J'ai fini par réussir, sans ODBC ni DSN, je donne donc ma solution (pour ceux que ça intéresse).
Je rappelle le contexte :
J'ai une base Access sur un PC Windows sur lequel je souhaite ne rien
installer ou rajouter. Et je dois exploiter cette base sous un PC Linux
contenant Oracle (9i). Les deux PC sont en réseau.
Solution
Elle ne fut pas simple à trouver. On ne trouve quasiment rien sur le net
de ce genre.
Attention, elle n'est valable qu'avec un Linux RHEL 3 & Access 97. Je
pense qu'elle est portable sur du RHEL 4 (j'en suis sure même) voir un
autre Linux, mais pour Access, mieux vaut rester dans la version 97 ou
2000 (éventuellement 2002), pas au-delà. Cependant, Microsoft Access
permet la possibilité d'enregistrer sa base en une version antérieure,
donc tout va bien.
Prérequis :
- J'ai trouvé sur le net un magnifique outil : MDBTools
(http://sourceforge.net/projects/mdbtools/). J'ai choisi la version
0.5-1 (la version 0.6pre1 fonctionne, mais uniquement à partir de RHEL
4). Cet outil est tout simplement un driver qui lit les bases Access, et
possède quelques commandes simples d'accès. Donc il faut l'installer sur
le PC Linux
- Il faut créer un compte sur le PC Windows spécifique pour la base (à
cause d'une ligne de commande sous Linux) et mettre en partage le
dossier dans lequel il y a la base.
- La base Oracle doit contenir les tables que l'on veut importer
(c'est-à-dire qu'elles doivent déjà être créées)
Choix des noms :
J'appelle ma base base.mdb (pas original, mais compréhensible) qui aura
une table "table". Et disons que j'appelle mon PC "PC" et le domaine de
mon PC windows "domaine". Le compte nécessaire sur le PC Windows :
"compte" avec comme mot de passe "password" (pas très dur à suivre comme
ça) et le dossier partagé "dossier".
Etapes à Suivre :
Donc je fais les choses dans l'ordre suivant:
1) à l'aide de la commande suivante, je copie ma base sur le PC Linux
(dans le répértoire que je choisis)
Je fais cela car il est nécessaire de n'avoir que les enregistrements
dans le fichier. L'option "-p" sert à enlever la mise en forme du type :
---------
| table |
---------
| plouf |
---------
L'option -d sert à choisir le séparateur.
NB : sur la version 0.6pre1 du MDBTools, les options "-HF" permettent
d'enlever les noms des colonnes et les stats du fichier csv, donc pas
besoin des "grep".
3) J'importe les tables dans Oracle à l'aide de "sqlldr" après avoir
configuré tous les fichiers de control et d'option correctement. (je ne
mets pas la ligne de commande, je n'ai pas encore approfondi la
question, mais il y a de l'aide sur le site d'Oracle). Il y a notamment
selon moi un bon tuto ici : http://www.supinfo-projects.com/fr/2005/sqlldr/ 4) Je fais des requêtes dans Oracle :)
Voili voilou, très simple vu comme ça, mais fallait trouver, et c'était
pas gagné !