IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PostgreSQL Discussion :

Générer un dictionnaire de données avec commentaires à partir d'une BDD Postgres


Sujet :

PostgreSQL

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Juillet 2017
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Chef de projet MOA

    Informations forums :
    Inscription : Juillet 2017
    Messages : 3
    Points : 5
    Points
    5
    Par défaut Générer un dictionnaire de données avec commentaires à partir d'une BDD Postgres
    Bonjour,

    ça fait un moment que je cherche un moyen de générer un dictionnaire de données d'un de mes schémas.
    Existe t-il une solution simple?

    Je travaille sur pgAdmin4 ou pgModeler essentiellement; et en gros, j'aimerais générer un document word ou pdf de l'ensemble des tables avec les commentaires, les types de données, les clés, les contraintes et les relations.

    Est-il possible de le faire sans passer par des lignes de commandes, y a t-il un outil pour faire ça?

    MErci.

  2. #2
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 761
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 21 761
    Points : 52 547
    Points
    52 547
    Billets dans le blog
    5
    Par défaut
    Power AMC en mode retro ingénierie.

    A +
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Juillet 2017
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Chef de projet MOA

    Informations forums :
    Inscription : Juillet 2017
    Messages : 3
    Points : 5
    Points
    5
    Par défaut
    Merci, mais à priori, Power AMC n'existe plus, et sa nouvelle version est payante; je vais quand même tester la version d'évaluation s'ils veulent bien me la laisser la télécharger!

  4. #4
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 799
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 799
    Points : 34 031
    Points
    34 031
    Billets dans le blog
    14
    Par défaut
    Il y a des logiciels de modélisation gratuits par contre je ne sais pas s'ils possèdent une fonction de dictionnaire de données.
    DBMain, JMerise (plus tout à fait gratuit mais pas cher), Open Modelsphere...
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole. Autoentrepreneur.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

  5. #5
    Expert éminent sénior
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 684
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 684
    Points : 30 973
    Points
    30 973
    Billets dans le blog
    1
    Par défaut
    Bonjour

    Moi j'ai fait un truc en Python qui interroge les tables systèmes et qui me génère un fichier ".dot" permettant à un logiciel gratuit nommé graphviz de générer le schéma des tables et liens dans différents formats assez universel (par exemple pdf et jpg)

    La requête qui liste les schémas et tables:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select table_schema, table_name from information_schema.tables where table_type='BASE TABLE' and table_schema not in ("information_schema", "pg_catalog") order by table_schema, table_name;
    La requête qui récupère la clef primaire d'une table:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    select column_name
    from information_schema.key_column_usage
    where (constraint_schema, constraint_name)=(
    	select constraint_schema, constraint_name
    	from information_schema.table_constraints
    	where (table_schema, table_name, constraint_type)=('schema S', 'table T', 'PRIMARY KEY')
    );
    La requête qui récupère tous les champs d'une table
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    select column_name, data_type, character_maximum_length, numeric_precision, numeric_precision_radix, numeric_scale
    from information_schema.columns
    where (table_schema, table_name)=('schema S', 'table T')
    order by ordinal_position;
    Et pour récupérer les contraintes d'intégrité associées à une table T là c'est le plus compliqué
    1. récupérer les identifiants liants T et ses contraintes foreign key
      Code : Sélectionner tout - Visualiser dans une fenêtre à part
      1
      2
      3
      4
      5
      select pg_constraint.conrelid, pg_constraint.confrelid, pg_constraint.conkey, pg_constraint.confkey, t2.schemaname, t2.relname
      from pg_constraint
      inner join pg_stat_user_tables as t1 on (t1.relid=pg_constraint.conrelid)
      inner join pg_stat_user_tables as t2 on (t2.relid=pg_constraint.confrelid)
      where (pg_constraint.contype, t1.schemaname, t1.relname)=('f', 'schema S', 'table T');
      => ça te récupère autant de lignes qu'il y a de contraintes foreign associées à la table T. Chaque ligne contient
      • une colonne "conrelid" qui donne le oid de la table T (ex 77283)
      • une colonne "confrelid" qui donne le oid de la table foreign laquelle elle est liée (ex 77252)
      • 2 colonnes "conkey" (les clefs de la table) et "confkey (les clefs correspondantes de la table foreign). Ces clefs sont sous forme de tableau car elles peuvent être elles-mêmes composées de plusieurs colonnes et ces tableaux contiennent en fait les positions des colonnes dans la table. Donc ces colonnes "conkey" et "confkey" contiennent par exemple "{1, 3}" et "{4, 7}" ce qui signifie que les colonnes "1" et "3" de la table 77283 sont reliées aux colonnes "4" et "7" de la table distante 77252
      • 2 colonnes "schemaname" et "relname" donnant les noms "sql" de la table foreign (donc ici le nom de la table 77252)

    2. A partir donc de ces infos "conrelid" + "conkey" d'une part et "confrelid" et "confkey" d'autre part, on récupère les noms réels des colonnes de la façon suivante:
      Code : Sélectionner tout - Visualiser dans une fenêtre à part
      1
      2
      select attname from pg_attribute where attrelid=77283 and attnum in (1, 3);
      select attname from pg_attribute where attrelid=77252 and attnum in (4, 7);
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  6. #6
    Modérateur

    Avatar de MaitrePylos
    Homme Profil pro
    DBA
    Inscrit en
    Juin 2005
    Messages
    5 496
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : Belgique

    Informations professionnelles :
    Activité : DBA
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 496
    Points : 12 596
    Points
    12 596
    Par défaut
    Bonjour,

    J'utilise DBeaver , qui une fois connecter à votre DB vous donner directement le Schéma de la db où vous pouvez afficher un certain nombre d'information.

    Sinon, il y a bien longtemps , j'utilisais http://www.analysesi.com/ qui lui générais un dictionnaire complet, mais vous ne pouviez avoir deux fois le même clés (typiquement id).

  7. #7
    Membre éprouvé

    Homme Profil pro
    Consultant ERP
    Inscrit en
    Janvier 2013
    Messages
    372
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Consultant ERP
    Secteur : Conseil

    Informations forums :
    Inscription : Janvier 2013
    Messages : 372
    Points : 1 202
    Points
    1 202
    Par défaut
    PgModeler le fait depuis la version 0.9.2

Discussions similaires

  1. Réponses: 2
    Dernier message: 06/11/2011, 12h05
  2. comment générer un dictionnaire de données sur power amc
    Par mido clubiste dans le forum PowerAMC
    Réponses: 1
    Dernier message: 14/04/2009, 11h33
  3. ajout ligne avec donnée dans msflexgrid à partir d'une autre form
    Par bastos77 dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 12/03/2009, 17h08
  4. Réponses: 3
    Dernier message: 27/03/2008, 13h09
  5. Comment charger des données en mémoire à partir d'une BDD
    Par n@n¤u dans le forum Persistance des données
    Réponses: 2
    Dernier message: 20/02/2007, 11h53

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo