Mise sous tension de psql : un guide essentiel des méta-commandes PostgreSQL
Apprenez les méta-commandes psql qui vous aident à inspecter les schémas, formater la sortie, changer de base de données et travailler plus rapidement depuis le terminal.
Boostez psql : Guide Essentiel des Méta-Commandes PostgreSQL
Lorsque vous travaillez avec PostgreSQL depuis un terminal, les méta-commandes psql vous évitent d'écrire des requêtes catalogue pour les vérifications courantes. Ces commandes avec barre oblique inversée vous permettent de lister les tables, décrire les objets, changer de base de données, formater la sortie et obtenir de l'aide sans quitter votre session.
Ce guide couvre les commandes psql que vous utiliserez le plus souvent et montre où elles s'intègrent dans le travail réel avec les bases de données.
Comprendre les Méta-Commandes psql
Les méta-commandes dans psql sont des directives traitées par psql lui-même, plutôt que d'être envoyées au serveur PostgreSQL pour exécution. Elles sont facilement identifiables par leur barre oblique inversée (\) initiale. Cette distinction est cruciale car les méta-commandes ont leur propre syntaxe et comportement, distincts du SQL standard.
Par exemple, alors que vous pourriez écrire SELECT * FROM information_schema.tables; pour lister toutes les tables, une méta-commande psql peut obtenir le même résultat avec un simple \dt.
Méta-Commandes Essentielles pour l'Inspection de Base de Données
Inspecter la structure de votre base de données est une tâche fréquente. psql fournit plusieurs méta-commandes pour rendre ce processus sans effort.
Lister les Tables (\dt)
La commande \dt est l'une des méta-commandes les plus fréquemment utilisées. Elle liste toutes les tables de la base de données courante, avec leur schéma et leur propriétaire.
Exemple :
\dtSortie :
Liste des relations Schéma | Nom | Type | Propriétaire --------+------------+-------+---------- public | comptes | table | postgres public | produits | table | postgres ventes | commandes | table | dbadmin (3 lignes)Variantes :
\dt+: Fournit des informations plus détaillées, y compris la taille de la table et la description.\dt schema.*: Liste les tables uniquement dans un schéma spécifique.
Décrire les Tables et Colonnes (\d)
La commande \d est précieuse pour comprendre la structure d'une table spécifique, y compris ses colonnes, types de données, contraintes et index.
Exemple : Pour décrire la table
produits:\d produitsSortie :
Table "public.produits" Colonne | Type | Collationnement | Nullable | Défaut ----------+-----------------------+-----------+----------+--------- produit_id | integer | | not null | nom | character varying(100)| | | prix | numeric(10, 2) | | | Index : "produits_pkey" PRIMARY KEY, btree (produit_id)Variantes :
\d+ nom_table: Fournit des informations encore plus détaillées, y compris les paramètres de stockage et les commentaires.\dn: Liste tous les schémas.\df: Liste toutes les fonctions.\dv: Liste toutes les vues.
Inspecter les Vues (\dv)
Similaire aux tables, vous pouvez lister et décrire les vues.
Exemple (Lister les vues) :
\dvExemple (Décrire une vue) :
\dv ma_vue
Lister les Schémas (\dn)
Pour voir tous les schémas présents dans votre base de données, utilisez la commande \dn.
- Exemple :
\dn
Méta-Commandes pour la Gestion des Requêtes et le Contrôle de la Sortie
psql offre des options puissantes pour contrôler l'affichage des résultats de requêtes et pour gérer votre historique de requêtes.
Chronométrage des Requêtes (\timing)
La commande \timing active/désactive l'affichage du temps écoulé pour chaque requête SQL. Elle est utile pour des comparaisons rapides lors de l'optimisation d'une requête, bien que vous devriez utiliser EXPLAIN (ANALYZE, BUFFERS) lorsque vous avez besoin d'un véritable plan d'exécution.
Exemple (Activer le chronométrage) :
\timing onDésormais, chaque requête que vous exécuterez sera suivie de son temps d'exécution.
Exemple (Désactiver le chronométrage) :
\timing off
Formatage de la Sortie (\a, \H, \t)
\a: Bascule entre une sortie alignée (tableau) et non alignée (type CSV). La sortie non alignée est souvent plus facile à analyser par programme.\a SELECT * FROM produits;\H: Passe le format de sortie en HTML.\H SELECT * FROM produits;\t: Active/désactive l'affichage des en-têtes de colonnes et des pieds de page avec le nombre de lignes. Ceci est utile lorsque vous souhaitez une sortie plus facile à rediriger vers une autre commande.\t SELECT nom, prix FROM produits;
Pagination (\pset pager)
Si les résultats de votre requête sont longs, psql peut utiliser un paginateur tel que less, selon votre environnement et vos paramètres de paginateur. Contrôlez ce comportement avec \pset pager.
Exemple (Utiliser le paginateur pour les sorties longues) :
\pset pager onExemple (Désactiver le paginateur) :
\pset pager off
Méta-Commandes Administratives
Au-delà de l'inspection et du contrôle de la sortie, psql fournit des commandes pour les tâches administratives courantes.
Lister les Bases de Données (\l)
Pour voir toutes les bases de données disponibles sur le serveur PostgreSQL connecté, utilisez \l.
- Exemple :
\l
Se Connecter à une Autre Base de Données (\c)
Si vous êtes déjà connecté à une session psql et souhaitez passer à une autre base de données, utilisez la commande \c.
- Exemple : Pour se connecter à la base de données
mabase:\c mabase
Exécuter \? pour l'Aide
En cas de doute, psql fournit son propre système d'aide. La commande \? liste toutes les méta-commandes disponibles, et \! vous permet d'exécuter des commandes shell.
Exemple (Lister toutes les méta-commandes) :
\?Exemple (Exécuter une commande shell, par exemple
ls) :\! ls -l
Bonnes Pratiques et Conseils
- Utilisez des alias shell pour les commandes
psqlcomplètes : Les alias shell ne peuvent pas exécuter\dtdans une sessionpsqldéjà ouverte, mais ils peuvent raccourcir les commandes de démarrage courantes. Par exemple,alias pprod='psql "postgresql://[email protected]/prod"'. - Combinez avec SQL : Les méta-commandes ne s'excluent pas mutuellement avec SQL. Vous pouvez les utiliser pour inspecter rapidement un schéma avant d'écrire une instruction
SELECTou utiliser\timingpour comparer les temps d'exécution des requêtes. - Comprenez la Portée : N'oubliez pas que les méta-commandes opèrent dans le contexte de votre session
psqlet connexion actuelles. Des commandes comme\cchangeront la base de données active pour cette session. - Utilisez
\?Généreusement : L'aide intégrée est complète et constitue une excellente ressource lorsque vous avez besoin de vous souvenir d'une commande ou d'en découvrir de nouvelles.
À Retenir
Commencez avec \dt, \d, \dn, \l, \c, \timing, \pset pager et \?. Ces quelques commandes couvrent la plupart des travaux d'inspection quotidiens et rendent psql beaucoup moins semblable à une invite SQL brute.