🔝 Retour au Sommaire
Après avoir appris à naviguer dans PostgreSQL avec psql, il est temps de personnaliser votre environnement pour le rendre plus confortable et efficace. Ce guide vous présente toutes les commandes de configuration qui transformeront votre expérience avec psql.
Une bonne configuration vous permet de :
- ✅ Améliorer la lisibilité des résultats de requêtes
- ✅ Mesurer les performances de vos requêtes
- ✅ Adapter l'affichage selon le type de données
- ✅ Automatiser vos préférences au démarrage
- ✅ Gagner du temps avec des raccourcis
- Temporaire : Active pour la session en cours uniquement
- Permanente : Sauvegardée dans
.psqlrc, active à chaque démarrage
Par défaut, psql affiche les résultats en format tabulaire (lignes et colonnes côte à côte). L'affichage étendu affiche chaque colonne sur une ligne séparée, ce qui est idéal pour :
- Les tables avec beaucoup de colonnes
- Les résultats avec des valeurs longues
- Une meilleure lisibilité sur des petits écrans
Syntaxe :
\x [on|off|auto]
Exemples :
SELECT id, nom, prenom, email, telephone, adresse, ville FROM clients WHERE id = 1;
# Résultat (difficile à lire si les valeurs sont longues) :
id | nom | prenom | email | telephone | adresse | ville
----+---------+--------+----------------------+---------------+------------------------+---------
1 | Dupont | Alice | alice.dupont@mail.fr | 06 12 34 56 78| 15 rue de la Paix | Paris\x
SELECT id, nom, prenom, email, telephone, adresse, ville FROM clients WHERE id = 1;
# Résultat (beaucoup plus lisible) :
-[ RECORD 1 ]------------------
id | 1
nom | Dupont
prenom | Alice
email | alice.dupont@mail.fr
telephone | 06 12 34 56 78
adresse | 15 rue de la Paix
ville | Paris # Activer l'affichage étendu
\x on
# Expanded display is on.
# Désactiver l'affichage étendu
\x off
# Expanded display is off.
# Basculer (toggle) : si c'est on, passe à off et vice-versa
\x
# Expanded display is on.
\x
# Expanded display is off.
# Mode automatique : utilise l'étendu si ça ne rentre pas à l'écran
\x auto
# Expanded display is used automatically.✅ Utilisez \x pour :
- Examiner un enregistrement spécifique avec beaucoup de colonnes
- Lire des valeurs JSONB ou des textes longs
- Voir clairement les détails d'une ligne
- Travailler sur un petit terminal
❌ N'utilisez PAS \x pour :
- Comparer plusieurs lignes côte à côte
- Avoir une vue d'ensemble de nombreuses lignes
- Exporter des données (utilisez plutôt \copy)
-- Sans \x : difficile à lire
SELECT * FROM commandes WHERE id = 100;
-- Activer \x
\x on
-- Relancer la même requête : beaucoup mieux !
SELECT * FROM commandes WHERE id = 100;
-[ RECORD 1 ]--------+----------------------
id | 100
client_id | 42
date_commande | 2024-11-15 14:23:45
montant_total | 1599.99
statut | livree
adresse_livraison | 12 avenue des Champs Elysées
commentaires | Livraison rapide demandée
created_at | 2024-11-15 14:23:45.123456
updated_at | 2024-11-18 10:15:32.789012 Astuce 💡 : Je recommande \x auto dans votre .psqlrc pour avoir le meilleur des deux mondes !
Syntaxe :
\timing [on|off]
Description : Affiche le temps d'exécution de chaque commande SQL.
Exemples :
# Activer le timing
\timing on
# Timing is on.
# Exécuter une requête
SELECT COUNT(*) FROM clients;
# Résultat :
count
-------
5000
(1 row)
Time: 45.234 ms
# Requête plus lente
SELECT * FROM commandes
WHERE date_commande >= NOW() - INTERVAL '1 year'
ORDER BY montant_total DESC;
# Résultat : ... données ...
Time: 1234.567 ms (00:01.235)\timing off
# Timing is off.
# Ou simplement basculer
\timingLe temps affiché inclut :
- ⏱️ Le temps d'exécution côté serveur
- 🌐 Le temps de transfert réseau
- 📊 Le temps de formatage côté client
Unités :
ms: millisecondes (< 1 seconde)s: secondes (format00:01.234pour lisibilité)
✅ Toujours !
Sérieusement, activez-le par défaut dans votre .psqlrc. Cela vous aide à :
-
Identifier les requêtes lentes
SELECT * FROM huge_table; -- Time: 15234.567 ms -- Oups, besoin d'un index !
-
Comparer différentes approches
-- Approche 1 SELECT ... FROM ... WHERE ...; Time: 523.123 ms -- Approche 2 (avec un index) SELECT ... FROM ... WHERE ...; Time: 12.345 ms -- Beaucoup mieux !
-
Valider l'impact d'un index
-- Avant création d'index SELECT * FROM produits WHERE categorie = 'electronique'; Time: 1234.56 ms CREATE INDEX idx_produits_categorie ON produits(categorie); -- Après création d'index SELECT * FROM produits WHERE categorie = 'electronique'; Time: 23.45 ms -- 50x plus rapide !
-
Benchmarker vos optimisations
Attention
\pset (pour "print set") contrôle tous les aspects de l'affichage des résultats : format, bordures, séparateurs, alignement, etc.
Syntaxe générale :
\pset [OPTION [VALUE]]
Sans arguments : Affiche toutes les options actuelles
\pset
# Résultat :
border 1
columns 0
expanded off
fieldsep '|'
fieldsep_zero off
footer on
format aligned
linestyle ascii
null ''
...Syntaxe :
\pset border [0|1|2|3]
Valeurs :
0: Aucune bordure1: Bordures internes (défaut)2: Bordures complètes3: Bordures doubles (style Unicode)
Exemples :
\pset border 0
SELECT id, nom, prix FROM produits LIMIT 3;
# Résultat :
id nom prix
1 Ordinateur 999.99
2 Souris 29.99
3 Clavier 79.99\pset border 1
SELECT id, nom, prix FROM produits LIMIT 3;
# Résultat :
id | nom | prix
----+------------+--------
1 | Ordinateur | 999.99
2 | Souris | 29.99
3 | Clavier | 79.99\pset border 2
SELECT id, nom, prix FROM produits LIMIT 3;
# Résultat :
+----+------------+--------+
| id | nom | prix |
+----+------------+--------+
| 1 | Ordinateur | 999.99 |
| 2 | Souris | 29.99 |
| 3 | Clavier | 79.99 |
+----+------------+--------+\pset border 3
\pset linestyle unicode
SELECT id, nom, prix FROM produits LIMIT 3;
# Résultat :
┌────┬────────────┬────────┐
│ id │ nom │ prix │
├────┼────────────┼────────┤
│ 1 │ Ordinateur │ 999.99 │
│ 2 │ Souris │ 29.99 │
│ 3 │ Clavier │ 79.99 │
└────┴────────────┴────────┘Recommandation : border 1 pour l'usage quotidien, border 2 pour les présentations.
Syntaxe :
\pset format [aligned|unaligned|wrapped|html|asciidoc|latex|latex-longtable|troff-ms]
Formats principaux :
\pset format aligned
SELECT id, nom FROM produits LIMIT 2;
id | nom
----+------------
1 | Ordinateur
2 | Souris\pset format unaligned
\pset fieldsep '|'
SELECT id, nom FROM produits LIMIT 2;
id|nom
1|Ordinateur
2|SourisUsage : Excellent pour des scripts shell qui parsent la sortie.
\pset format html
SELECT id, nom FROM produits LIMIT 2;
<table border="1">
<tr>
<th align="center">id</th>
<th align="left">nom</th>
</tr>
<tr valign="top">
<td align="right">1</td>
<td align="left">Ordinateur</td>
</tr>
<tr valign="top">
<td align="right">2</td>
<td align="left">Souris</td>
</tr>
</table>Usage : Génération de rapports HTML.
\pset format wrapped
# Comme aligned, mais enveloppe les longues lignes au lieu de les tronquerSyntaxe :
\pset null 'STRING'
Problème : Par défaut, NULL s'affiche comme une chaîne vide '', ce qui le rend invisible et indiscernable d'une vraie chaîne vide.
Exemples :
SELECT id, nom, email FROM clients WHERE id IN (1, 2);
id | nom | email
----+--------+-------
1 | Dupont | alice@example.com
2 | Martin | -- Impossible de savoir si c'est NULL ou ''\pset null '(null)'
SELECT id, nom, email FROM clients WHERE id IN (1, 2);
id | nom | email
----+--------+-------------------
1 | Dupont | alice@example.com
2 | Martin | (null) -- Maintenant c'est clair !Autres valeurs populaires :
\pset null 'NULL'
\pset null '¤'
\pset null '␀'
\pset null '[NULL]'Astuce 💡 : Mettez \pset null '(null)' dans votre .psqlrc pour toujours voir les NULL clairement !
Syntaxe :
\pset fieldsep 'STRING'
Usage : Utilisé uniquement en mode unaligned, définit le caractère séparant les colonnes.
Exemples :
\pset format unaligned
# Séparateur pipe (défaut)
\pset fieldsep '|'
SELECT id, nom, prix FROM produits LIMIT 2;
id|nom|prix
1|Ordinateur|999.99
2|Souris|29.99
# Séparateur virgule (CSV)
\pset fieldsep ','
SELECT id, nom, prix FROM produits LIMIT 2;
id,nom,prix
1,Ordinateur,999.99
2,Souris,29.99
# Séparateur tabulation (TSV)
\pset fieldsep '\t'
# ou
\pset fieldsep E'\t'Usage pratique : Export de données pour Excel, scripts, etc.
Syntaxe :
\pset linestyle [ascii|old-ascii|unicode]
Exemples :
\pset linestyle ascii
\pset border 2
SELECT * FROM produits LIMIT 2;
+----+------+
| id | nom |
+----+------+
| 1 | PC |
| 2 | Souris |
+----+------+\pset linestyle unicode
\pset border 2
SELECT * FROM produits LIMIT 2;
┌────┬────────┐
│ id │ nom │
├────┼────────┤
│ 1 │ PC │
│ 2 │ Souris │
└────┴────────┘Attention unicode nécessite que votre terminal supporte UTF-8 (cas général aujourd'hui).
Syntaxe :
\pset footer [on|off]
Description : Affiche ou masque la ligne de comptage en bas des résultats.
Exemples :
SELECT * FROM produits LIMIT 5;
-- Résultat : ...
(5 rows) ← C'est le footer\pset footer off
SELECT * FROM produits LIMIT 5;
-- Résultat : ...
-- (pas de ligne de comptage)Usage : Désactiver pour des exports propres ou des scripts.
Syntaxe :
\pset columns [N]
Description : Définit la largeur maximale de l'affichage (en caractères).
Exemples :
# Largeur automatique (défaut)
\pset columns 0
# Largeur fixe à 80 caractères
\pset columns 80
# Largeur pour écran large
\pset columns 200Usage : Utile si psql ne détecte pas correctement la largeur de votre terminal.
Syntaxe :
\pset title 'TEXTE'
Description : Ajoute un titre au-dessus du tableau de résultats.
Exemples :
\pset title 'Liste des Produits en Promotion'
SELECT nom, prix FROM produits WHERE promotion = true;
# Résultat :
Liste des Produits en Promotion
nom | prix
------------+--------
Ordinateur | 799.99
Clavier | 59.99Astuce 💡 : Utile pour les rapports et les exports.
Syntaxe :
\pset tableattr 'HTML_ATTRIBUTES'
Description : Définit des attributs HTML supplémentaires pour les tableaux (utilisé avec format html).
Exemples :
\pset format html
\pset tableattr 'class="table table-striped" id="results"'
SELECT * FROM produits LIMIT 2;
# Résultat :
<table border="1" class="table table-striped" id="results">
...
</table>Usage : Intégration avec Bootstrap, Tailwind, ou votre CSS personnalisé.
Syntaxe :
\pset recordsep 'STRING'
Description : En mode unaligned, définit le séparateur entre les lignes.
Exemples :
\pset format unaligned
\pset fieldsep ','
\pset recordsep '\n' # Nouvelle ligne (défaut)
SELECT id, nom FROM produits LIMIT 2;
id,nom
1,Ordinateur
2,SourisSyntaxe :
\pset tuples_only [on|off]
\t # Raccourci
Description : N'affiche que les données, sans en-tête ni footer.
Exemples :
SELECT nom FROM produits LIMIT 3;
nom
------------
Ordinateur
Souris
Clavier
(3 rows)\pset tuples_only on
# Ou simplement :
\t
SELECT nom FROM produits LIMIT 3;
Ordinateur
Souris
ClavierUsage : Scripts shell qui récupèrent uniquement les valeurs.
Exemple pratique :
# Script bash utilisant psql
for db in $(psql -t -c "SELECT datname FROM pg_database WHERE datname NOT LIKE 'template%'"); do
echo "Sauvegarde de $db..."
pg_dump "$db" > "/backup/${db}.sql"
done# Configuration
\pset format unaligned
\pset fieldsep ','
\pset footer off
\pset tuples_only on
# Export
SELECT * FROM clients;
# Ou directement dans un fichier
\o /tmp/clients.csv
SELECT * FROM clients;
\o# Ma configuration recommandée
\x auto # Étendu si nécessaire
\pset null '(null)' # Voir les NULL
\pset border 1 # Bordures internes
\pset linestyle unicode # Joli !
\timing on # Toujours utile\pset border 2
\pset linestyle unicode
\pset title 'Rapport Mensuel des Ventes'
\pset footer on
SELECT * FROM rapport_ventes WHERE mois = 'Novembre';Syntaxe :
\echo TEXT
Exemples :
\echo '=== Début du rapport ==='
SELECT COUNT(*) FROM commandes;
\echo '=== Fin du rapport ==='
# Résultat :
=== Début du rapport ===
count
-------
1234
(1 row)
=== Fin du rapport ===Usage : Scripts, rapports, debugging.
Syntaxe :
\qecho TEXT
Description : Comme \echo, mais écrit dans le fichier de sortie (\o) et non sur la console.
Exemples :
\o /tmp/rapport.txt
\qecho '=== Rapport généré le 2024-11-21 ==='
SELECT * FROM ventes;
\qecho '=== Fin du rapport ==='
\oSyntaxe :
\prompt [TEXT] VARIABLE
Exemples :
# Demander un ID
\prompt 'Entrez un ID client : ' client_id
# Utiliser la variable
SELECT * FROM clients WHERE id = :client_id;Autre exemple :
\prompt 'Ville à rechercher : ' ville_recherche
SELECT nom, prenom FROM clients WHERE ville = :'ville_recherche';Note : Utilisez :variable pour une valeur numérique et :'variable' pour une chaîne.
Syntaxe :
\set [VARIABLE [VALUE]]
Exemples :
# Définir une variable
\set limit_value 10
# Utiliser la variable
SELECT * FROM produits LIMIT :limit_value;
# Variable de chaîne
\set search_term 'Ordinateur'
SELECT * FROM produits WHERE nom LIKE '%' || :'search_term' || '%';
# Voir toutes les variables
\set
# Résultat :
AUTOCOMMIT = 'on'
COMP_KEYWORD_CASE = 'preserve-upper'
...
limit_value = '10'
search_term = 'Ordinateur' Variables spéciales :
AUTOCOMMIT: Mode auto-commit (on/off)ECHO: Afficher les commandes exécutéesON_ERROR_STOP: Arrêter sur erreurQUIET: Mode silencieux
Syntaxe :
\unset VARIABLE
Exemples :
\set ma_variable 'valeur'
\unset ma_variableSyntaxe :
\! COMMAND
Exemples :
# Voir les fichiers du répertoire courant
\! ls -la
# Voir l'utilisation disque
\! df -h
# Éditer un fichier avec votre éditeur
\! nano mon_script.sql
# Afficher un fichier
\! cat /etc/hostname
# Windows
\! dir
\! type fichier.txtUsage : Pratique pour rester dans psql sans quitter.
psql a trois niveaux de prompts configurables :
- PROMPT1 : Prompt principal (quand psql attend une commande)
- PROMPT2 : Prompt de continuation (quand une commande est incomplète)
- PROMPT3 : Prompt lors d'un COPY FROM STDIN
Variables de prompt disponibles :
| Variable | Description | Exemple |
|---|---|---|
%M |
Nom complet de l'hôte | localhost |
%m |
Nom court de l'hôte | localhost |
%> |
Port | 5432 |
%n |
Nom d'utilisateur | postgres |
%/ |
Base de données actuelle | ma_boutique |
%~ |
Base de données (avec ~ si HOME) | ma_boutique |
%# |
# si superuser, sinon > |
> |
%R |
État de transaction | = (aucune), ^ (transaction), ! (erreur) |
%x |
État de transaction (verbose) | ou * |
%? |
Code d'erreur de la dernière commande | 0 |
%[...%] |
Séquences d'échappement terminal | Couleurs |
ma_boutique=#\set PROMPT1 '%n@%M:%> %/ %R%# '
# Résultat :
postgres@localhost:5432 ma_boutique =#\set PROMPT1 '%[%033[1;32m%]%n@%/%[%033[0m%]%R%# '
# Résultat : postgres@ma_boutique en vert\set PROMPT1 '%n@%/ %x%R%# '
# Sans transaction
postgres@ma_boutique =#
# Dans une transaction
BEGIN;
postgres@ma_boutique *=#
# Après erreur
SELECT * FROM table_inexistante;
postgres@ma_boutique !=# \set PROMPT1 '%[%033[1;34m%]%n@%/%[%033[0m%]%R%x%# '
\set PROMPT2 '%[%033[1;34m%]%R%[%033[0m%]%# '.psqlrc est un fichier de configuration qui s'exécute automatiquement à chaque démarrage de psql. C'est l'équivalent du .bashrc pour psql.
Emplacement :
- Linux/Mac :
~/.psqlrc(home directory) - Windows :
%APPDATA%\postgresql\psqlrc.conf
# Linux/Mac
nano ~/.psqlrc
# Windows
notepad %APPDATA%\postgresql\psqlrc.conf-- ~/.psqlrc
-- Configuration personnalisée de psql
-- ============================================
-- Affichage et Formatage
-- ============================================
-- Affichage étendu automatique
\x auto
-- Voir les NULL clairement
\pset null '(null)'
-- Bordures et style
\pset border 1
\pset linestyle unicode
-- Toujours afficher le temps d'exécution
\timing on
-- ============================================
-- Historique
-- ============================================
-- Sauvegarder l'historique de manière persistante
\set HISTFILE ~/.psql_history
-- Taille de l'historique
\set HISTSIZE 10000
-- ============================================
-- Erreurs et Comportement
-- ============================================
-- Arrêter l'exécution en cas d'erreur dans un script
-- (désactivé par défaut pour l'usage interactif)
-- \set ON_ERROR_STOP on
-- Afficher les erreurs en détail
\set VERBOSITY verbose
-- ============================================
-- Prompt Personnalisé
-- ============================================
-- Prompt coloré avec base de données et état de transaction
\set PROMPT1 '%[%033[1;34m%]%n@%/%[%033[0m%]%x%R%# '
\set PROMPT2 '%[%033[1;34m%]%R%[%033[0m%]%# '
-- ============================================
-- Auto-complétion
-- ============================================
-- Complétion en majuscules pour les mots-clés SQL
\set COMP_KEYWORD_CASE upper
-- ============================================
-- Messages
-- ============================================
-- Message de bienvenue personnalisé
\echo ''
\echo '╔════════════════════════════════════════╗'
\echo '║ Bienvenue dans PostgreSQL ! ║'
\echo '╚════════════════════════════════════════╝'
\echo ''
\echo 'Configuration personnalisée chargée depuis .psqlrc'
\echo 'Astuce: Utilisez \\? pour l''aide'
\echo ''
-- ============================================
-- Raccourcis Personnalisés (Optionnel)
-- ============================================
-- Raccourci pour voir les connexions actives
\set show_connections 'SELECT pid, usename, application_name, client_addr, state, query_start, state_change FROM pg_stat_activity WHERE state <> \'idle\' ORDER BY query_start;'
-- Raccourci pour voir les tables et leur taille
\set show_table_sizes 'SELECT schemaname, tablename, pg_size_pretty(pg_total_relation_size(schemaname||''.''||tablename)) AS size FROM pg_tables ORDER BY pg_total_relation_size(schemaname||''.''||tablename) DESC;'
-- Usage des raccourcis :
-- :show_connections
-- :show_table_sizes# Après avoir défini les raccourcis dans .psqlrc
# Voir les connexions actives
:show_connections
# Voir la taille des tables
:show_table_sizes# Relancer psql
psql -U postgres -d ma_base
# Ou depuis psql, recharger la configuration
\i ~/.psqlrc# Définir un emplacement personnalisé pour l'historique
export PSQL_HISTORY=~/.config/psql_history# Utiliser less comme paginateur
export PAGER=less
# Ou more
export PAGER=more
# Désactiver le paginateur
\pset pager off# Définir l'éditeur pour \e
export PSQL_EDITOR=nano
export PSQL_EDITOR=vim
export PSQL_EDITOR=code # VS Code Syntaxe :
\pset pager [on|off|always]
Description : Contrôle si les résultats longs utilisent un paginateur (less, more).
Exemples :
# Utiliser le paginateur seulement si nécessaire (défaut)
\pset pager on
# Ne jamais utiliser de paginateur
\pset pager off
# Toujours utiliser le paginateur
\pset pager alwaysSyntaxe :
\encoding [ENCODING]
Exemples :
# Voir l'encodage actuel
\encoding
# UTF8
# Changer l'encodage (rarement nécessaire)
\encoding LATIN1Syntaxe :
\setenv NAME VALUE
Exemples :
\setenv PAGER less
\setenv EDITOR nano-- .psqlrc pour développement
\x auto
\pset null '(null)'
\pset border 2
\pset linestyle unicode
\timing on
\set VERBOSITY verbose
\set ON_ERROR_STOP on
\set COMP_KEYWORD_CASE upper
\echo 'Environnement de développement chargé'-- .psqlrc pour consultation production
\x auto
\pset null '(null)'
\timing on
\set AUTOCOMMIT off
\echo ''
\echo '⚠️ MODE PRODUCTION - Transactions manuelles activées'
\echo ' N''oubliez pas de COMMIT ou ROLLBACK !'
\echo ''-- .psqlrc pour exports CSV
\pset format unaligned
\pset fieldsep ','
\pset footer off
\pset tuples_only on
\timing off
\echo 'Mode export CSV activé'-- Fichier script.sql
\set ON_ERROR_STOP on
\set QUIET on
-- Votre script
BEGIN;
-- ... commandes SQL ...
COMMIT;Syntaxe :
\set ECHO [all|errors|queries]
Valeurs :
all: Affiche tout (commandes et méta-commandes)errors: Affiche uniquement les commandes qui échouentqueries: Affiche uniquement les requêtes SQL
Exemples :
\set ECHO queries
SELECT * FROM clients WHERE id = 1;
# Affiche :
# SELECT * FROM clients WHERE id = 1;
# (puis le résultat)Usage : Déboguer des scripts, comprendre ce qui est exécuté.
Syntaxe :
\set ON_ERROR_ROLLBACK [on|off|interactive]
Description : En cas d'erreur dans une transaction, effectue automatiquement un ROLLBACK.
Valeurs :
on: Toujours rollback sur erreuroff: Jamais (défaut)interactive: Uniquement en mode interactif
Exemples :
\set ON_ERROR_ROLLBACK on
BEGIN;
INSERT INTO clients (nom) VALUES ('Test');
INSERT INTO clients (nom) VALUES (NULL); -- Erreur si NOT NULL
-- Rollback automatique ici
COMMIT; -- Rien à committerSyntaxe :
\set VERBOSITY [default|verbose|terse]
Exemples :
# Défaut
\set VERBOSITY default
SELECT * FROM table_inexistante;
# ERROR: relation "table_inexistante" does not exist
# LINE 1: SELECT * FROM table_inexistante;
# ^
# Verbose (plus de détails)
\set VERBOSITY verbose
SELECT * FROM table_inexistante;
# ERROR: 42P01: relation "table_inexistante" does not exist
# LINE 1: SELECT * FROM table_inexistante;
# ^
# LOCATION: parserOpenTable, parse_relation.c:1180
# Terse (minimal)
\set VERBOSITY terse
SELECT * FROM table_inexistante;
# ERROR: relation "table_inexistante" does not exist| Commande | Description | Exemple |
|---|---|---|
\x [auto] |
Affichage étendu | \x auto |
\timing |
Temps d'exécution | \timing on |
\pset border N |
Bordures (0-3) | \pset border 2 |
\pset null 'X' |
Affichage NULL | \pset null '(null)' |
\pset format X |
Format de sortie | \pset format html |
\t |
Tuples seuls | \t |
\set VAR VAL |
Définir variable | \set limit 10 |
\echo TEXT |
Afficher message | \echo 'Début' |
\! |
Commande shell | \! ls -l |
Voici la configuration que je recommande pour la plupart des utilisateurs :
-- ~/.psqlrc optimal
-- Affichage
\x auto
\pset null '(null)'
\pset border 1
\pset linestyle unicode
-- Performance
\timing on
-- Historique
\set HISTFILE ~/.psql_history- :DBNAME
\set HISTCONTROL ignoredups
\set HISTSIZE 10000
-- Erreurs
\set VERBOSITY verbose
-- Prompt coloré
\set PROMPT1 '%[%033[1;34m%]%n@%/%[%033[0m%]%x%R%# '
\set PROMPT2 '%[%033[1;34m%]...%[%033[0m%]%R%# '
-- Auto-complétion
\set COMP_KEYWORD_CASE upper
-- Raccourcis utiles
\set show_slow_queries 'SELECT query, calls, total_time, mean_time FROM pg_stat_statements ORDER BY mean_time DESC LIMIT 20;'
-- Message de bienvenue
\echo ''
\echo '🐘 PostgreSQL - Configuration optimisée chargée'
\echo ' Astuce: Tapez \\? pour l''aide'
\echo ''-
Créez un .psqlrc
- Gagnez du temps à chaque session
- Standardisez votre environnement
-
Activez \timing
- Identifiez immédiatement les requêtes lentes
- Validez vos optimisations
-
Configurez \pset null
- Évitez la confusion entre NULL et chaîne vide
- Déboguez plus facilement
-
Utilisez \x auto
- Le meilleur des deux mondes
- S'adapte automatiquement
-
Définissez des raccourcis
- Requêtes fréquentes dans .psqlrc
- Gagnez du temps
-
Personnalisez votre prompt
- Voyez immédiatement où vous êtes
- État de transaction visible
-
Ne mettez pas de mots de passe dans .psqlrc
- Utilisez
.pgpassà la place - Sécurité avant tout
- Utilisez
-
N'activez pas ON_ERROR_STOP dans .psqlrc
- Trop strict pour l'usage interactif
- Réservez-le aux scripts
-
Ne forcez pas un format dans .psqlrc
- Gardez
alignedpar défaut - Changez selon le besoin
- Gardez
-
N'oubliez pas de commenter votre .psqlrc
- Vous oublierez pourquoi vous avez fait ça
- Facilitez la maintenance
Si vous avez fait des modifications et voulez revenir à la normale :
# Réinitialiser tous les pset
\pset border 1
\pset format aligned
\pset linestyle ascii
\pset null ''
\pset footer on
# Désactiver les options
\x off
\timing off
\t off
# Recharger .psqlrc
\i ~/.psqlrcLa configuration de psql est essentielle pour une expérience optimale. Les points clés à retenir :
🎯 Essentiels :
\timingpour mesurer les performances\x autopour un affichage adaptatif\pset null '(null)'pour voir les NULL
🎨 Confort :
- Bordures et style Unicode
- Prompt personnalisé avec couleurs
- Variables et raccourcis
📁 Automatisation :
- Créez un
.psqlrcrobuste - Définissez des raccourcis fréquents
- Standardisez votre environnement
💡 Astuce finale : Commencez simple avec les 3-4 configurations essentielles, puis ajoutez progressivement selon vos besoins !
Prochaines sections :
- Export/Import avec psql
- Meta-commandes avancées
- Scripts et automatisation