[ODBC et DSN] Lecture base Access sur Linux

Résolu/Fermé
Lucinda000 - 10 mai 2007 à 15:18
Lucinda000
Messages postés
27
Date d'inscription
mardi 24 avril 2007
Statut
Membre
Dernière intervention
21 juin 2007
- 21 juin 2007 à 09:56
Bonjour à tous,

J'aurai besoin de quelqu'un qui s'y connaisse en ODBC, DSN et Linux. Oui, ça fait beaucoup je sais, mais j'suis vraiment dans une impasse là.

J'ai une base *.mdb sur un PC Linux Red Hat 3 que j'aimerai lire (faire des requêtes dessus) le tout via un programme écrit en C (oui je sais, c'est compliqué...).

Donc j'ai créé mon DSN(fichier "odbc.ini") et choisi le bon driver (libmdbodbc.so.0 défini dans "odbcinst.ini").

J'ai écrit un p'tit programme en C à l'aide de la librairie "libodbc.so" qui se connecte au DSN. La connexion semble marcher.

Mais je dis bien "semble" parce que lorsque j'essaie de voir les caractéristiques de mon DSN à l'aide de la fonction "SQLGetInfo" je n'ai strictement rien.

Mais alors : pourquoi ?

Si quelqu'un pouvait m'aider, s'il vous plait.

2 réponses

Lucinda000
Messages postés
27
Date d'inscription
mardi 24 avril 2007
Statut
Membre
Dernière intervention
21 juin 2007

21 juin 2007 à 09:56
Salut.

Je veux bien te dire ce que j'ai finalement trouvé. Je te raconte un peu le problème complet que j'avais quand même.

J'avais un PC sous Windows sur lequel se trouvait ma base Access et sur lequel je ne devais rien installer. Et bien sûr, j'en avais besoin sur mon PC Linux qui contenait par chance une base Oracle 9i. Les 2 PC sont en réseau.

Grâce à Samba et à la commande : "smbclient" je peux copier dans un dossier le fichier *.mdb. Premier problème résolu.
Ensuite, j'ai installé MDBTools dont voici le lien : https://sourceforge.net/projects/mdbtools/
Alors attention, si tu es sous RedHat3 et que ta base contient des tables ayant des noms avec des "_", il faut installer les rpm du site : http://bryanmills.net/archives/2003/11/microsoft-access-database-using-linux-and-php/
Sinon, tu peux prendre la version 0.6 de MDBTools, et le problème est réglé.

Donc une fois qu'il est installé, tu peux t'en servir pour exporter la base sous fichier texte en format csv (mais extension *.dat) à l'aide la commande : "select * from table" | mdb-sql -d ';' mabase.mdb
Sous la version 0.6, il faut mettre les options "-HF". Si tu es sous RedHat3, il faut rajouter des "grep -v" pour le besoin de l'export.

Faut le répéter pour chaque table, bien évidemment.

Une fois que c'est fait, tu peux l'exporter dans ta base Oracle grâce à l'outil SQL*Loader. Et donc à la commande "sqlldr".

Après, tu te sers de ta base comme sous Oracle.


Voilà. Si tu as des questions, n'hésite pas. Si tu veux m'expliquer ce que tu veux faire pour que je te donne des indications, n'hésite pas non plus.

NB : pour écrire du coup le programme en C, il faut juste utiliser la fonction system().


Bonne journée,
Lucinda
1
Lucinda000
Messages postés
27
Date d'inscription
mardi 24 avril 2007
Statut
Membre
Dernière intervention
21 juin 2007

11 mai 2007 à 16:52
Se répondre à soi-même, j'adore :)

Bon alors j'annonce : ça y est, j'arrive à avoir un listing de mes tables !!!

Je n'utilise plus la même libraire, j'utilise "libmdbodbc" et surtout les fichiers d'entête <mdbtools.h> et <mdbsql.h>

Par contre, je ne sais pas du tout comment y faire des requêtes !

Donc si quelqu'un pouvait m'aider, s'il vous plait !
-1
Lucinda000
Messages postés
27
Date d'inscription
mardi 24 avril 2007
Statut
Membre
Dernière intervention
21 juin 2007

18 mai 2007 à 15:09
Bon alors ne vous en faites pas, j'ai trouvé, me suis débrouillée. Si ça intéresse quelqu'un qu'il me fasse signe, et puis voilà.
0
denis > Lucinda000
Messages postés
27
Date d'inscription
mardi 24 avril 2007
Statut
Membre
Dernière intervention
21 juin 2007

20 juin 2007 à 21:15
Ca m'intéresse grandement ton histoire.
Peux tu m'expliquer un peu plus comment faire??
Merci,
Seb
0