Rechercher : dans
Par :

[ODBC et DSN] Lecture base Access sur Linux

Dernière réponse le 21 jun 2007 à 09:56:57 Lucinda000, le 10 mai 2007 à 15:18:09 
 Signaler ce message aux modérateurs

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.

Configuration: Linux Red Hat 3

Meilleures réponses pour « [ODBC et DSN] Lecture base Access sur Linux » dans :
Comment lire un fichier ligne par ligne VoirComment lire un fichier ligne par ligne Préambule Boucle while Syntaxe Exemple Astuces Bonus Boucle for Syntaxe Préambule Une des erreurs les plus communes dans l'apprentissage des scripts "bash" sous GNU/LInux pour lire un fichier...
Lire et écrire les partitions Windows (NTFS) VoirUbuntu est parfaitement capable de lire et écrire les partitions Windows, qu'elles soient FAT32 ou NTFS. Cela inclut les partitions de Windows 95, 98, ME, NT, 2000, XP, 2003 et Vista. Mais par défaut, Ubuntu (et Linux en général) peut lire et...
Oracle - Les fichiers d'une base Oracle VoirLes fichiers physiques d'une base Oracle Les fichiers physiques d'une base Oracle permettent de stocker de manière persistante les données manipulées par Oracle, tandis que la mémoire sert à optimiser la vitesse de fonctionnement de la base de...

1

Lucinda000, le 11 mai 2007 à 16:52:55

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 !

Répondre à Lucinda000

2

Lucinda000, le 18 mai 2007 à 15:09:23

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à.

Répondre à Lucinda000

3

denis, le 20 jun 2007 à 21:15:34

Ca m'intéresse grandement ton histoire.
Peux tu m'expliquer un peu plus comment faire??
Merci,
Seb

Répondre à denis

4

 Lucinda000, le 21 jun 2007 à 09:56:57
  • +1

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 : http://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/...
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

Répondre à Lucinda000