[ODBC et DSN] Lecture base Access sur Linux
Résolu
Lucinda000
-
Lucinda000 Messages postés 27 Date d'inscription Statut Membre Dernière intervention -
Lucinda000 Messages postés 27 Date d'inscription Statut Membre Dernière intervention -
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.
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.
A voir également:
- [ODBC et DSN] Lecture base Access sur Linux
- Changer dsn - Guide
- Base de registre - Guide
- Linux reader - Télécharger - Stockage
- Confirmation de lecture whatsapp - Guide
- Télécharger livre de lecture ce2 gratuit pdf - Télécharger - Éducatifs
2 réponses
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
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
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 !
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 !