rapport postgresqlDisposant d’une base de données GeoNework , je me suis interrogé sur comment intégrer la liste des attributs  d’une table dans  sa fiche de métadonnées. Et surtout comment les visualiser d’une manière dynamique.  Alors j’ai regardé du coté  PGAdmin, et oui on peut générer directement un rapport en html. Mais comment le rendre dynamique?
D’abord après de fructueuses recherches voici la requête qui me permet d’afficher pour une table donnée:  les attributs, les types, le nom de la table, les commentaires, s’il est rempli ou pas par défaut, la clef primaire…
Voici un exemple avec la table bâtiment dans le schéma majic (données foncières)


 SELECT a.attnum as numero,
 a.attrelid::regclass as table
 ,a.attname AS attribut
 ,format_type(a.atttypid, a.atttypmod) AS type
 ,a.attnotnull AS notnull
 ,coalesce(p.indisprimary, FALSE) AS primary_key
 ,f.adsrc AS default_val
 ,d.description AS commenatire
 FROM pg_attribute a
 LEFT JOIN pg_index p ON p.indrelid = a.attrelid AND a.attnum = ANY(p.indkey)
 LEFT JOIN pg_description d ON d.objoid = a.attrelid AND d.objsubid = a.attnum
 LEFT JOIN pg_attrdef f ON f.adrelid = a.attrelid AND f.adnum = a.attnum
 WHERE a.attnum > 0
 AND NOT a.attisdropped
 AND a.attrelid = 'majic_2014.d44_2014_batiment'::regclass -- A adapter
 ORDER BY a.attnum;
 

Voici le résultat:
majic.png
Et avec le rapport de pgAdmin(fichier/rapport rapide) ça donne ça:
rapport pgadmin.png
 
Alors tout ça c’est magique. Mais comment le rendre dynamique pour éviter de générer des milliers de pages tml? Je suis donc passé par du php pour transmettre des données par url.
Par exemple,  vous voulez afficher les attributs de la table « majic_2014.d44_2014_lotslocaux »   voici l’url à transmettre dans GeoNework :

http://localhost/developpement/rapport/rapport.php?table=majic_2014.d44_2014_lotslocaux
Vous remarquerez que la variable "table" permet de récupérer les attributs de la table que vous voulez afficher

Voici le résultat dans GeoNework :metadonnees.png
Voici le résultat :
rapport postgresql.png
Vous trouverez le code ici :
Évidemment vous pouvez également l’utiliser pour générer directement d’autres requêtes.
Pour plus de détails concernant la transmissions de variables ici
 
 
 

One Reply to “Geonetwork: Rapport dynamique: Liste des attributs d'une table dans #Postgre”

  1. Aliou Cherif Ba says:

    Bonjour M.Kane Diouck.
    Je suis très fier de voir un Sénégalais réaliser ce travail extraordinaire.
    J’ai l’idée de faire un Sig de ce genre, pour un restaurant qui fait de la livraison.
    Donc je voudrais leur proposer un outil qui pourra améliorer considérablement leur service de livraison. C’est dans ce sens en fouillant sur le net que j’ai eu le plaisir de lire votre excellent article. J’aimerai bien échanger avec vous pour que vous puissiez m’aider à réaliser ce projet. Svp je vous laisse mon mail alioucherif.ba@gmail.com.
    Au plaisir d avoir de vos nouvelles

    Répondre

Laisser un commentaire