PostgreSQL La base de donnees la plus sophistiquee au monde.

Forums PostgreSQL.fr

Le forum officiel de la communauté francophone de PostgreSQL

Vous n'êtes pas identifié(e).

#1 19/12/2013 00:18:25

azn0viet
Membre

Schéma bizarre de la BDD => récupération des tables impossible

Bonsoir !

Je suis actuellement étudiant en informatique et pour le besoin d'un projet, je me dois de configurer une base PostgreSQL en local. J'ai choisi de le faire avec phpPgAdmin sous Wamp, mais le problème est que l'arborescence de la BDD est bizarre, ce qui fait que je n'arrive pas à récupérer les tables de la base.

Voici la structure de la base T3 sous pgAdmin III : https://dl.dropboxusercontent.com/u/616 … ostgre.png

En rouge : les tables récupérées mais que je ne veux pas
En vert : les 2 tables que je souhaite récupérer

Voici la partie du code concerné (en JAVA) :

try {
	Class.forName("org.postgresql.Driver");

	try {
		Connection c = DriverManager.getConnection("jdbc:postgresql://localhost:5432/T3","postgres", "root");
		
		DatabaseMetaData md = null;
		ResultSet res;
		
		
		// Initialisation de la variable de méta données
		try {
			md = c.getMetaData();
		} catch (SQLException e1) {
			e1.printStackTrace();
		}
		
		try {
			res = md.getTables(null,  null,  "%",  null);
			while (res.next()) {
                                System.out.println(res.getString("TABLE_NAME");
			}
		}catch (SQLException e) {
			e.printStackTrace();
		}
		
	} catch (SQLException e) {
		e.printStackTrace();
	}
} catch (ClassNotFoundException e) {
	e.printStackTrace();
}

Quelqu'un aurait une idée ? Merci.

Hors ligne

#2 19/12/2013 00:26:05

rjuju
Administrateur

Re : Schéma bizarre de la BDD => récupération des tables impossible

Bonjour,

vous devriez essayer en spécifiant le schéma «public» (2ème argument de getTables() ) plutôt que tous les schémas.

J'ai également déplacé le sujet dans la partie Java du forum, plus approprié pour cette question.

Hors ligne

#3 19/12/2013 00:37:43

azn0viet
Membre

Re : Schéma bizarre de la BDD => récupération des tables impossible

Bonsoir.

... et ça marche ! Avec cette ligne : res = md.getTables(null,  "public",  "%",  new String[] {"TABLE"});

J'ai une petite question supplémentaire, le "public" est spécifique à quoi ? phpPgAdmin ? Wamp ? Ou carrément PostgreSQL (ça m'étonnerait) ? Simplement pour savoir si ça fonctionnera sur la base de données de mon prof tongue

En tout cas, merci pour cette réponse rapide et efficace !

Hors ligne

#4 19/12/2013 00:55:39

rjuju
Administrateur

Re : Schéma bizarre de la BDD => récupération des tables impossible

Je ne connais pas assez java pour savoir comment se comporte cette fonction avec d'autres moteurs, mais cela devrait être similaires sur la majorité d'entre eux. En effet, toutes les informations que doit stocker le moteur (liste des tables, liste des colonnes etc) le sont sous forme de tables. Avec postgres, tout ceci est stocké dans le schéma «pg_catalog» (avec les mêmes informations de manière plus normalisées dans le schéma «information_schema».

En forçant la recherche des tables dans le schéma public, vous n'avez plus que vos propres tables. Par contre, si vous stockez des tables dans d'autres schémas, il faudra exécuter la fonction sur chacun de vos schémas.

Hors ligne

Pied de page des forums