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

#1 09/12/2009 11:03:22

mich30
Membre

Savoir le nombre de champs dans une table

Bonjour,

Comment puis je savoir le nombre de champs dans une table en pg/sql ?
merci

Hors ligne

#2 09/12/2009 11:07:15

gleu
Administrateur

Re : Savoir le nombre de champs dans une table

select count(*) from pg_attribute, pg_class where attnum>0 and attrelid=pg_class.oid and relname='t1';

en remplaçant t1 par le nom de la table.


Guillaume.

Hors ligne

#3 09/12/2009 11:10:18

Marc Cousin
Membre

Re : Savoir le nombre de champs dans une table

à mon avis, le plus simple, c'est en passant par la vue information_schema.columns


Marc.

Hors ligne

#4 09/12/2009 11:11:58

Marc Cousin
Membre

Re : Savoir le nombre de champs dans une table

Zut cette fois c'est moi qui ais perdu smile


Marc.

Hors ligne

#5 09/12/2009 11:21:35

gleu
Administrateur

Re : Savoir le nombre de champs dans une table

smile


Guillaume.

Hors ligne

#6 09/12/2009 11:43:12

mich30
Membre

Re : Savoir le nombre de champs dans une table

ok merci pour cette requete mais aussi avec le nom du schema si possible....
merci

Hors ligne

#7 09/12/2009 11:51:39

gleu
Administrateur

Re : Savoir le nombre de champs dans une table

Et bien tu regardes dans la table pg_class, tu devrais y trouver une colonne en relation avec le namespace. Et tu regardes aussi la table pg_namespace pour y faire une jolie jointure...


Guillaume.

Hors ligne

#8 09/12/2009 11:54:50

Marc Cousin
Membre

Re : Savoir le nombre de champs dans une table

Comme quoi ma requête elle était mieux, moi y a déjà le namespace smile

Plus sérieusement, l'autre avantage de l'information_schema, c'est que c'est plus ou moins normalisé entre pas mal de bases


Marc.

Hors ligne

#9 09/12/2009 14:34:37

mich30
Membre

Re : Savoir le nombre de champs dans une table

Et bien tu regardes dans la table pg_class, tu devrais y trouver une colonne en relation avec le namespace. Et tu regardes aussi la table pg_namespace pour y faire une jolie jointure...

pour gleu
( ya un type oid et un type name ???))


   select count(*) from pg_attribute, pg_class  ,pg_namespace   where attnum>0 and attrelid=pg_class.oid and relname='matable'
    and relnamespace=nspname and nspname ='monshema'

Hors ligne

#10 09/12/2009 14:36:45

gleu
Administrateur

Re : Savoir le nombre de champs dans une table

La requête est fausse, à mon avis. Je pensais plutôt à ceci :

SELECT count(*)
FROM pg_attribute, pg_class, pg_namespace
WHERE attnum>0 AND attrelid=pg_class.oid AND relname='matable'
  AND relnamespace=pg_namespace.oid and nspname ='monshema'

Guillaume.

Hors ligne

#11 09/12/2009 15:21:56

mich30
Membre

Re : Savoir le nombre de champs dans une table

c'est Ok merci en fait j'ai 2 schemas
schema Prod c'est le shema de production
schema rcte c'est le schema de recette
quand j'ai des nouvelles données ou nouveau champ je les integre dans le schema de recette
ensuite je fais des tests sur le schema de recette et apres je compare les differences par rapport au schema de production
(par exemple au bout de quelques semaines  )
j'ai pris comme critere le nombre d'enregistrement dans chaque table  et le nombre de champ dans chaque table pour comparer les 2 schemas
existe t'il au niveau postgres une fonction qui compare 2 schemas?
ou d'autres criteres que je pourrez prendre en compte
Avis aux experts
merci

Hors ligne

#12 09/12/2009 16:19:17

gleu
Administrateur

Re : Savoir le nombre de champs dans une table

existe t'il au niveau postgres une fonction qui compare 2 schemas?

Non. Par contre, il existe des outils pour comparer la structure de deux bases. Par exemple check_postgres.


Guillaume.

Hors ligne

#13 09/12/2009 16:34:58

mich30
Membre

Re : Savoir le nombre de champs dans une table

ok c'est bien dommage ce sera la nouvelle fonction a inventer !! je te remercie
Michel

Hors ligne

#14 10/12/2009 11:16:09

gleu
Administrateur

Re : Savoir le nombre de champs dans une table

Comme je suis en train de préparer la newsletter de dalibo, je viens de re-découvrir un petit outil qui pourra vous aider : http://apgdiff.sourceforge.net/

Cet outil permet de comparer les objets contenus dans deux dumps. Donc, théoriquement car je n'ai pas testé, rien ne vous empêche de créer un dump séparé de vos deux schémas et de lancer l'outil sur ces deux dumps. C'est à tester smile


Guillaume.

Hors ligne

Pied de page des forums