Outil gratuit
PostgreSQL en diagramme ER
Collez la sortie de pg_dump telle quelle, avec ses lignes SET, ses contraintes ALTER TABLE ONLY et ses blocs COPY, et obtenez un diagramme ER de chaque table et clé étrangère. Essayez l’exemple de SaaS multi-locataire, qui utilise des colonnes d’identité, un type enum et une table partitionnée.
Exemple de résultat
Comment ça marche
Collez ou déposez la sortie de pg_dump
Un dump au format texte, un fichier de migration ou des instructions CREATE TABLE venant de psql, de pgAdmin ou d’un ORM. Inutile de nettoyer le dump avant.
Voyez chaque table avec ses clés
Les clés que pg_dump écrit à la fin du fichier sont rattachées à leurs tables, chaque lien de clé étrangère part de sa propre colonne, et un dump qui contient plusieurs schémas reçoit un cadre par schéma.
Ouvrez-le dans Archboard
Enregistrez-le comme nouveau diagramme pour le réorganiser, l’annoter, partager un lien ou l’exporter en SVG et PNG. Un compte Google ou GitHub suffit pour s’inscrire.
Extraire le schéma de base de données de PostgreSQL
Lancez cette commande sur la base de données, puis collez schema.sql ou déposez le fichier :
--schema-only laisse de côté les lignes de données, et --no-owner et --no-privileges retirent les lignes OWNER TO, GRANT et REVOKE. Ajoutez --schema=sales pour n’exporter qu’un schéma. Remplacez mydb par le nom de la base, et ajoutez -h et -U ou une URI de connexion si besoin.
pg_dump --schema-only --no-owner --no-privileges mydb > schema.sql
La syntaxe PostgreSQL dans un dump
Ce que devient chaque construction d’un fichier pg_dump :
serial · GENERATED … AS IDENTITY- Lues comme des colonnes ordinaires qui gardent leur type tel qu’il est écrit ; la valeur par défaut d’identité ou de séquence n’est pas affichée. Une colonne serial n’est marquée PK que si une PRIMARY KEY le précise, car serial seul ne crée pas de clé.
CREATE TYPE … AS ENUM- Le nom du type enum devient le type de la colonne, par exemple order_status ; ses étiquettes ne sont pas listées sur la carte.
CREATE SCHEMA- Quand le dump contient plusieurs schémas, chaque schéma qui a des tables devient un cadre autour d’elles, et les clés étrangères entre schémas traversent les cadres.
ALTER TABLE ONLY … ADD CONSTRAINT- Lu. pg_dump écrit les clés primaires, les contraintes uniques et les clés étrangères tout à la fin ; elles sont appliquées une fois toutes les tables connues.
PARTITION OF- Repliées dans la table parente : une table découpée par mois devient une seule carte, et l’aperçu indique combien de partitions ont été repliées. ATTACH PARTITION est traité de la même façon.
$$ … $$- Les corps de fonctions et de procédures entre dollars sont ignorés en entier, si bien que leurs points-virgules ne peuvent pas couper une instruction. Dans un bloc DO, CREATE TABLE et ALTER TABLE … ADD CONSTRAINT sont tout de même lus.
COPY … FROM stdin- Les lignes de données qui suivent sont ignorées sans être lues, jusqu’à la ligne \. qui les termine.
\restrict- Ignoré. Les versions récentes de pg_dump entourent le dump de lignes \restrict et \unrestrict ; celles-ci et les autres méta-commandes psql comme \connect sont ignorées.
Ce qu’un diagramme issu de pg_dump laisse de côté
- Les données des tables. Les lignes des blocs COPY et des instructions INSERT ne sont pas lues : un dump avec données donne le même diagramme qu’un dump fait avec --schema-only.
- Les fonctions, procédures, déclencheurs et le code des blocs DO. Leurs corps sont ignorés et comptés ; seules les tables et les contraintes d’un bloc DO sont reprises.
- Les politiques de sécurité au niveau des lignes (RLS), GRANT et REVOKE, et les propriétaires des objets. Qui peut lire ou modifier une table n’apparaît pas sur le diagramme.
- Tout ce qui vient d’un serveur PostgreSQL en marche. Aucune connexion n’est établie : la taille des tables, le nombre de lignes et les extensions installées ne sont pas affichés.
Questions sur PostgreSQL
Quelles options de pg_dump utiliser ?
pg_dump --schema-only --no-owner --no-privileges donne la sortie la plus courte, mais tout dump au format texte fonctionne, données comprises. Une archive au format personnalisé créée avec -Fc n’est pas du texte SQL : convertissez-la avec pg_restore --schema-only -f schema.sql suivi du nom de fichier de l’archive.
Comment plusieurs schémas sont-ils représentés ?
Chaque schéma qui contient des tables devient un cadre avec ses tables à l’intérieur, si bien que public, billing et audit restent séparés, et les clés étrangères entre eux traversent les cadres. Pour ne dessiner qu’un schéma, exportez-le seul avec --schema=nom, ou -n en abrégé.
Que deviennent les tables partitionnées ?
Les partitions créées avec PARTITION OF, ou rattachées ensuite avec ATTACH PARTITION, sont repliées dans leur table parente : une table payments découpée en douze partitions mensuelles apparaît comme une seule carte. L’aperçu indique combien de partitions ont été repliées.
Les types enum et personnalisés sont-ils affichés ?
Un enum créé avec CREATE TYPE … AS ENUM sert de type de colonne : une colonne status affiche order_status, mais les étiquettes de l’enum ne sont pas listées. Les domaines et les types composites ne sont pas dessinés comme des cartes ; les colonnes qui les utilisent affichent quand même le nom du type tel qu’il est écrit.
Quelque chose est-il enregistré quand je colle un dump ?
L’aperçu n’est pas enregistré. Quand vous choisissez Ouvrir dans Archboard, le diagramme dessiné, avec ses cartes de tables, ses noms et types de colonnes, ses cadres de schéma et ses liens, est enregistré comme nouveau diagramme dans votre espace de travail. Les modifications ultérieures de la base ne le mettent pas à jour.
L’outil de diagramme ER pour PostgreSQL est-il gratuit ?
Oui. Coller un dump et voir le diagramme ne demandent aucun compte. Pour ouvrir le diagramme dans Archboard, un compte gratuit suffit.
Ouvrez un canevas en une minute
Connectez-vous avec Google ou GitHub. Gratuit pour un siège. Passez à un forfait supérieur quand l'équipe vous rejoint.