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 :

    \dt
    
  • Sortie :

                           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 produits
    
  • Sortie :

                                   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) :

    \dv
    
  • Exemple (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 on
    

    Dé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 on
    
  • Exemple (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 psql complètes : Les alias shell ne peuvent pas exécuter \dt dans une session psql dé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 SELECT ou utiliser \timing pour 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 psql et connexion actuelles. Des commandes comme \c changeront 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.