Maîtrisez PostgreSQL pour le streaming de données en temps réel. Commandes CLI, configuration et gestion de clusters PostgreSQL pour applications modernes.
psql
Client interactif PostgreSQL
-h--host-p--port-U--username-d--dbname-W--password-w--no-password-c--command-f--file-l--list-E--echo-hidden-q--quiet-v--variable-X--no-psqlrc-1--single-transaction-A--no-align-t--tuples-only-F--field-separator-H--html-P--pset-R--record-separator-x--expanded-z--field-separator-zero-0--record-separator-zero-V--version-?--help
psql -U postgres
Connexion en tant que superutilisateur postgres
-h-p-d
psql -h localhost -p 5432 -U monuser -d mabase
Connexion avec tous les paramètres
-W
psql -d mabase -c "SELECT * FROM users"
Exécute une commande SQL et quitte
-c--command
psql -d mabase -f script.sql
Exécute un fichier SQL
-f--file-1--single-transaction
psql -l
Liste toutes les bases de données
-l--list
psql -d mabase -A -t -F ',' -c "SELECT * FROM users" > export.csv
Exporte en CSV
-A-t-F
createdb
Crée une base de données PostgreSQL
-h--host-p--port-U--username-W--password-e--echo-O--owner-T--template-E--encoding-l--locale--lc-collate--lc-ctype--tablespace-V--version-?--help
createdb -U postgres mabase
Crée une base de données
-O--owner-E--encoding-T--template
createdb -U postgres -O monuser -E UTF8 mabase
Crée une base avec propriétaire et encodage
-O-E
createdb -U postgres -T template0 mabase
Crée une base depuis template0
-T--template
dropdb
Supprime une base de données PostgreSQL
-h--host-p--port-U--username-W--password-e--echo-i--interactive-f--force--if-exists-V--version-?--help
dropdb -U postgres mabase
Supprime une base de données
-f--force--if-exists-i--interactive
dropdb -U postgres --if-exists mabase
Supprime si elle existe
--if-exists
dropdb -U postgres -f mabase
Force la suppression (déconnecte les utilisateurs)
-f--force
pg_dump
Sauvegarde une base de données PostgreSQL
-h--host-p--port-U--username-W--password-d--dbname-f--file-F--format-j--jobs-v--verbose-Z--compress-a--data-only-b--blobs-B--no-blobs-c--clean-C--create-E--encoding-n--schema-N--exclude-schema-o--oids-O--no-owner-R--no-reconnect-s--schema-only-S--superuser-t--table-T--exclude-table-x--no-privileges--binary-upgrade--column-inserts--disable-dollar-quoting--disable-triggers--enable-row-security--exclude-table-data--extra-float-digits--if-exists--inserts--load-via-partition-root--lock-wait-timeout--no-comments--no-publications--no-security-labels--no-subscriptions--no-sync--no-table-access-method--no-tablespaces--no-toast-compression--no-unlogged-table-data--on-conflict-do-nothing--quote-all-identifiers--rows-per-insert--section--serializable-deferrable--snapshot--strict-names--use-set-session-authorization--verbose-V--version-?--help
pg_dump -U postgres mabase > sauvegarde.sql
Sauvegarde au format SQL texte
-f--file
pg_dump -U postgres -F c -f sauvegarde.dump mabase
Sauvegarde au format personnalisé (compressé)
-F--format
pg_dump -U postgres -F d -j 4 -f /backup/ mabase
Sauvegarde parallèle (répertoire, 4 jobs)
-F-j--jobs
pg_dump -U postgres -F t -f sauvegarde.tar mabase
Sauvegarde au format tar
-F--format
pg_dump -U postgres -s mabase > schema.sql
Sauvegarde uniquement le schéma (sans données)
-s--schema-only
pg_dump -U postgres -a mabase > data.sql
Sauvegarde uniquement les données
-a--data-only
pg_dump -U postgres -t users mabase > users.sql
Sauvegarde une table spécifique
-t--table
pg_dump -U postgres -T logs mabase > sans_logs.sql
Exclut une table de la sauvegarde
-T--exclude-table
pg_dump -U postgres -n public mabase > schema_public.sql
Sauvegarde un schéma spécifique
-n--schema
pg_dump -U postgres --inserts mabase > sauvegarde_inserts.sql
Utilise INSERT au lieu de COPY
--inserts--column-inserts
pg_dump -U postgres -Z 9 -F c -f sauvegarde.dump mabase
Compression maximale (9)
-Z--compress
pg_dumpall
Sauvegarde toutes les bases de données d'un cluster
-h--host-p--port-U--username-W--password-f--file-v--verbose-c--clean-g--globals-only-o--oids-O--no-owner-r--roles-only-s--schema-only-S--superuser-t--tablespaces-only-x--no-privileges--binary-upgrade--disable-triggers--exclude-database--extra-float-digits--if-exists--inserts--lock-wait-timeout--no-comments--no-role-passwords--no-security-labels--no-subscriptions--no-sync--no-tablespaces--no-unlogged-table-data--on-conflict-do-nothing--quote-all-identifiers--rows-per-insert--use-set-session-authorization-V--version-?--help
pg_dumpall -U postgres > toutes_bases.sql
Sauvegarde tout le cluster
-f--file
pg_dumpall -U postgres -g > globals.sql
Sauvegarde uniquement les objets globaux (rôles, tablespaces)
-g--globals-only
pg_dumpall -U postgres -r > roles.sql
Sauvegarde uniquement les rôles
-r--roles-only
pg_dumpall -U postgres -t > tablespaces.sql
Sauvegarde uniquement les tablespaces
-t--tablespaces-only
pg_restore
Restaure une sauvegarde PostgreSQL
-h--host-p--port-U--username-W--password-d--dbname-f--file-v--verbose-a--data-only-c--clean-C--create-e--exit-on-error-I--index-j--jobs-l--list-L--use-list-n--schema-N--exclude-schema-O--no-owner-P--function-R--no-reconnect-s--schema-only-S--superuser-t--table-T--trigger-x--no-privileges--disable-triggers--enable-row-security--if-exists--no-comments--no-data-for-failed-tables--no-publications--no-security-labels--no-subscriptions--no-table-access-method--no-tablespaces--role--section--strict-names--use-set-session-authorization-V--version-?--help
pg_restore -U postgres -d mabase sauvegarde.dump
Restaure une sauvegarde au format personnalisé
-d--dbname
pg_restore -U postgres -d mabase -c sauvegarde.dump
Restaure en nettoyant d'abord (DROP)
-c--clean
pg_restore -U postgres -d mabase -C sauvegarde.dump
Crée la base avant restauration
-C--create
pg_restore -U postgres -d mabase -j 4 sauvegarde.dump
Restaure en parallèle (4 jobs)
-j--jobs
pg_restore -U postgres -d mabase -t users sauvegarde.dump
Restaure une table spécifique
-t--table
pg_restore -U postgres -d mabase -n public sauvegarde.dump
Restaure un schéma spécifique
-n--schema
pg_restore -U postgres -l sauvegarde.dump > liste.txt
Liste le contenu de la sauvegarde
-l--list
pg_restore -U postgres -d mabase -L liste.txt sauvegarde.dump
Restaure selon une liste éditée
-L--use-list
pg_restore -U postgres -d mabase -a sauvegarde.dump
Restaure uniquement les données
-a--data-only
pg_restore -U postgres -d mabase -s sauvegarde.dump
Restaure uniquement le schéma
-s--schema-only
pg_ctl
Contrôle le serveur PostgreSQL
-D--pgdata-l--log-m--mode-t--timeout-w--wait-W--no-wait-s--silent-o--options-V--version-?--help
pg_ctl -D /var/lib/postgresql/data start
Démarre le serveur PostgreSQL
-l--log-o--options-w--wait
pg_ctl -D /var/lib/postgresql/data stop
Arrête le serveur PostgreSQL
-m--mode-t--timeout-W--no-wait
pg_ctl -D /var/lib/postgresql/data stop -m fast
Arrêt rapide (annule les transactions)
-m--mode
pg_ctl -D /var/lib/postgresql/data stop -m immediate
Arrêt immédiat (nécessite recovery)
-m--mode
pg_ctl -D /var/lib/postgresql/data restart
Redémarre le serveur PostgreSQL
-m--mode-t--timeout
pg_ctl -D /var/lib/postgresql/data reload
Recharge la configuration sans redémarrer
-s--silent
pg_ctl -D /var/lib/postgresql/data status
Affiche le statut du serveur
pg_ctl -D /var/lib/postgresql/data promote
Promeut un serveur standby en primary
-w--wait-W--no-wait
initdb
Initialise un nouveau cluster PostgreSQL
-D--pgdata-U--username-E--encoding--locale--lc-collate--lc-ctype--lc-messages--lc-monetary--lc-numeric--lc-time-A--auth--auth-host--auth-local-k--data-checksums--pwfile--waldir-X--waldir-S--sync-only-T--text-search-config-W--pwprompt-d--debug-L--logfile-n--no-clean-N--no-sync--show-V--version-?--help
initdb -D /var/lib/postgresql/data -U postgres -E UTF8 --locale=fr_FR.UTF-8
Initialise un cluster avec encodage UTF-8
-D-U-E--locale
initdb -D /var/lib/postgresql/data -k
Initialise avec checksums de données
-k--data-checksums
pg_checksums
Active/désactive/vérifie les checksums
-D--pgdata-c--check-e--enable-d--disable-f--filenode-v--verbose-P--progress-V--version-?--help
pg_checksums -D /var/lib/postgresql/data --check
Vérifie les checksums
--check-v--verbose-P--progress
pg_checksums -D /var/lib/postgresql/data --enable
Active les checksums (serveur arrêté)
--enable-P--progress
pg_basebackup
Sauvegarde binaire d'un cluster PostgreSQL
-h--host-p--port-U--username-W--password-D--pgdata-F--format-r--max-rate-R--write-recovery-conf-S--slot-T--tablespace-mapping-X--wal-method-z--gzip-Z--compress-c--checkpoint-C--create-slot-l--label-n--no-clean-N--no-sync-P--progress-v--verbose--no-slot--no-verify-checksums--waldir-V--version-?--help
pg_basebackup -h localhost -U postgres -D /backup/base -F t -z -P
Sauvegarde base compressée avec progression
-h-U-D-F-z-P
pg_basebackup -h localhost -U postgres -D /backup/base -R -S slot_replication
Sauvegarde pour standby avec slot
-R-S--slot
pg_basebackup -h localhost -U postgres -D /backup/base -X stream
Inclut les WAL en streaming
-X--wal-method
pg_receivewal
Reçoit les WAL en streaming
-h--host-p--port-U--username-W--password-D--dir-n--no-loop-s--status-interval-S--slot-v--verbose-Z--compress-c--create-slot-d--drop-slot--endpos--no-sync--synchronous-V--version-?--help
pg_receivewal -h localhost -U postgres -D /wal/archive -S slot1 -c
Reçoit les WAL avec création de slot
-D-S-c--create-slot
pg_receivewal -h localhost -U postgres -D /wal/archive -s 10
Affiche le statut toutes les 10 secondes
-s--status-interval
pg_receivewal -h localhost -U postgres -D /wal/archive -Z 9
Compression maximale des WAL
-Z--compress
pg_rewind
Synchronise un ancien primary avec le nouveau
-D--target-pgdata--source-pgdata--source-server-P--progress-n--dry-run-R--write-recovery-conf--restore-target-wal--no-sync--no-ensure-shutdown-V--version-?--help
pg_rewind --target-pgdata=/var/lib/postgresql/data --source-server="host=localhost user=postgres" -P
Resynchronise un ancien primary
--target-pgdata--source-server-P--dry-run
pg_upgrade
Met à niveau un cluster PostgreSQL
-b--old-bindir-B--new-bindir-d--old-datadir-D--new-datadir-c--check-k--link-r--retain-p--old-port-P--new-port-U--username-v--verbose-j--jobs--clone--copy-o--old-options-O--new-options--socketdir--sync-method-V--version-?--help
pg_upgrade -b /usr/lib/postgresql/14/bin -B /usr/lib/postgresql/15/bin -d /var/lib/postgresql/14/data -D /var/lib/postgresql/15/data -c
Vérifie la mise à niveau possible
-c--check
pg_upgrade -b /usr/lib/postgresql/14/bin -B /usr/lib/postgresql/15/bin -d /var/lib/postgresql/14/data -D /var/lib/postgresql/15/data -k -j 4
Mise à niveau avec hard links et 4 jobs
-k--link-j--jobs
vacuumdb
Nettoie et analyse une base PostgreSQL
-h--host-p--port-U--username-W--password-d--dbname-a--all-e--echo-f--full-F--freeze-j--jobs-q--quiet-t--table-v--verbose-z--analyze-Z--analyze-only--analyze-in-stages--disable-page-skipping--min-mxid-age--min-xid-age--no-process-main--no-process-toast--parallel--process-main--process-toast--skip-locked-V--version-?--help
vacuumdb -U postgres -d mabase
Lance VACUUM sur une base
-d--dbname-v--verbose
vacuumdb -U postgres -d mabase -f
VACUUM FULL (récupère l'espace disque)
-f--full
vacuumdb -U postgres -d mabase -z
VACUUM et ANALYZE
-z--analyze
vacuumdb -U postgres -d mabase -Z
ANALYZE uniquement
-Z--analyze-only
vacuumdb -U postgres -d mabase -t users
VACUUM sur une table spécifique
-t--table
vacuumdb -U postgres -a
VACUUM sur toutes les bases
-a--all
vacuumdb -U postgres -d mabase -j 4
VACUUM parallèle (4 workers)
-j--jobs
vacuumdb -U postgres -d mabase --freeze
VACUUM FREEZE (prévient le wraparound)
-F--freeze
reindexdb
Reconstruit les index d'une base PostgreSQL
-h--host-p--port-U--username-W--password-d--dbname-a--all-e--echo-i--index-j--jobs-q--quiet-s--system-S--schema-t--table-v--verbose--concurrently--tablespace-V--version-?--help
reindexdb -U postgres -d mabase
Reconstruit tous les index d'une base
-d--dbname-v--verbose
reindexdb -U postgres -d mabase -t users
Reconstruit les index d'une table
-t--table
reindexdb -U postgres -d mabase -i idx_users_email
Reconstruit un index spécifique
-i--index
reindexdb -U postgres -d mabase -S public
Reconstruit les index d'un schéma
-S--schema
reindexdb -U postgres -d mabase -s
Reconstruit les index système
-s--system
reindexdb -U postgres -d mabase --concurrently -t users
Reconstruit sans bloquer les écritures
--concurrently
clusterdb
Réorganise physiquement les tables selon un index
-h--host-p--port-U--username-W--password-d--dbname-a--all-e--echo-q--quiet-t--table-v--verbose--verbose-V--version-?--help
clusterdb -U postgres -d mabase -t users
Cluster une table selon son index cluster
-d-t-v--verbose
pg_isready
Vérifie l'état de connexion du serveur
-h--host-p--port-U--username-d--dbname-q--quiet-t--timeout-V--version-?--help
pg_isready -h localhost -p 5432
Vérifie si le serveur accepte les connexions
-h-p-q--quiet
pg_isready -h localhost -p 5432 -t 5
Timeout de 5 secondes
-t--timeout
pgbench
Outil de benchmark PostgreSQL
-h--host-p--port-U--username-d--dbname-i--initialize-I--init-steps-F--fillfactor-n--no-vacuum-q--quiet-s--scale--foreign-keys--index-tablespace--partition-method--partitions--tablespace--unlogged-tables-c--client-j--jobs-t--transactions-T--time-P--progress-r--report-per-command-R--rate-L--latency-limit-f--file-b--builtin-M--protocol-N--skip-some-updates--aggregate-interval--failures-detailed--log-prefix--max-tries--no-vacuum--random-seed--sampling-rate--show-script-v--vacuum-all-V--version-?--help
pgbench -i -s 10 -U postgres mabase
Initialise une base de test (scale 10)
-i--initialize-s--scale
pgbench -c 10 -j 2 -T 60 -U postgres mabase
Benchmark 10 clients, 2 threads, 60 secondes
-c--client-j--jobs-T--time
pgbench -c 10 -t 1000 -U postgres mabase
1000 transactions par client
-c-t--transactions
pgbench -c 10 -T 60 -P 10 -U postgres mabase
Affiche la progression toutes les 10s
-P--progress
pgbench -c 10 -T 60 -f script.sql -U postgres mabase
Utilise un script personnalisé
-f--file
pgbench -b tpcb-like -c 10 -T 60 -U postgres mabase
Benchmark TPC-B like
-b--builtin
pg_config
Affiche les informations d'installation de PostgreSQL
--bindir--docdir--htmldir--includedir--pkgincludedir--includedir-server--libdir--pkglibdir--localedir--mandir--sharedir--sysconfdir--pgxs--configure--cc--cppflags--cflags--cflags_sl--ldflags--ldflags_ex--ldflags_sl--libs--version-?--help
pg_config --version
Affiche la version de PostgreSQL
pg_config --bindir
Affiche le répertoire des exécutables
pg_config --libdir
Affiche le répertoire des bibliothèques
postgres
Démarre le serveur PostgreSQL (mode single-user)
-D--pgdata-c--config-file-h--host-p--port-B--shared-buffers-d--debug-level-e--log-destination-F--fsync-i--listen-addresses-k--unix-socket-directories-l--ssl-N--max-connections-o--other-options-s--statistics-S--work-mem-t--tcp-keepalives-idle-W--postmaster--boot--check--describe-config--single-V--version-?--help
postgres -D /var/lib/postgresql/data
Démarre le serveur avec datadir
-D--pgdata
postgres --single -D /var/lib/postgresql/data mabase
Mode single-user sur une base
--single-D
postmaster
Alias historique de postgres (multi-user)
-D--pgdata
pg_waldump
Affiche le contenu des fichiers WAL
-b--bkp-detail-e--end-f--follow-n--limit-p--path-q--quiet-r--rmgr-s--start-t--timeline-V--version-w--waldir-x--xid-z--stats-?--help
pg_waldump -p /var/lib/postgresql/data/pg_wal -s 0/1000000 -e 0/2000000
Affiche les WAL entre deux LSN
-p--path-s--start-e--end
pg_waldump -p /var/lib/postgresql/data/pg_wal -n 10
Affiche 10 enregistrements
-n--limit
pg_waldump -p /var/lib/postgresql/data/pg_wal -z
Affiche les statistiques
-z--stats
pg_waldump -p /var/lib/postgresql/data/pg_wal -r Heap
Filtre par gestionnaire de ressources
-r--rmgr
pg_waldump -p /var/lib/postgresql/data/pg_wal -x 12345
Filtre par ID de transaction
-x--xid
pg_waldump -p /var/lib/postgresql/data/pg_wal -t 1
Timeline spécifique
-t--timeline
pg_resetwal
Réinitialise les WAL (utiliser en dernier recours)
-D--pgdata-e--epoch-f--force-l--next-wal-file-m--multixact-ids-o--next-oids-O--multixact-offset-u--oldest-transaction-id-V--version-x--next-transaction-id--wal-segsize-?--help
pg_resetwal -D /var/lib/postgresql/data -f
Force la réinitialisation des WAL
-D-f--force
pg_resetwal -D /var/lib/postgresql/data -n
Simulation (dry run)
-n--dry-run
pg_resetwal -D /var/lib/postgresql/data -l 000000010000000000000001
Définit le prochain fichier WAL
-l--next-wal-file
pg_controldata
Affiche les informations de contrôle du cluster
-D--pgdata-V--version-?--help
pg_controldata -D /var/lib/postgresql/data
Affiche les données de contrôle
-D
pg_verifybackup
Vérifie l'intégrité d'une sauvegarde base
-e--exit-on-error-i--ignore-m--manifest-path-n--no-parse-wal-q--quiet-s--skip-checksums-w--wal-directory-V--version-?--help
pg_verifybackup -m /backup/base/backup_manifest /backup/base
Vérifie une sauvegarde base
-m--manifest-path
pg_verifybackup -w /wal/archive /backup/base
Vérifie avec les WAL
-w--wal-directory
pg_combinebackup
Combine des sauvegardes incrémentielles
-o--output-V--version-?--help
pg_combinebackup -o /restored /backup/full /backup/inc1 /backup/inc2
Combine full + incrémentielles
-o--output
\l
[psql] Liste les bases de données
+
\l+
[psql] Liste les bases avec détails
\c mabase
[psql] Se connecte à une base de données
userhostport
\c mabase monuser localhost 5432
[psql] Connexion complète
\dt
[psql] Liste les tables du schéma courant
+pattern
\dt+
[psql] Liste les tables avec taille
\d nom_table
[psql] Décrit une table (colonnes, types, contraintes)
+
\d+ nom_table
[psql] Décrit une table avec détails (stockage, taille)
\di
[psql] Liste les index
+pattern
\dv
[psql] Liste les vues
+pattern
\dm
[psql] Liste les vues matérialisées
+pattern
\df
[psql] Liste les fonctions
+pattern
\df+
[psql] Liste les fonctions avec code source
\dn
[psql] Liste les schémas
+pattern
\du
[psql] Liste les rôles (utilisateurs)
+pattern
\du+
[psql] Liste les rôles avec description
\dg
[psql] Liste les groupes (alias de \du)
+
\dp
[psql] Liste les privilèges des tables
pattern
\z
[psql] Alias de \dp
pattern
\ds
[psql] Liste les séquences
+pattern
\dS
[psql] Liste les tables système
+
\db
[psql] Liste les tablespaces
+pattern
\dD
[psql] Liste les domaines
+pattern
\dT
[psql] Liste les types de données
+pattern
\dx
[psql] Liste les extensions installées
+pattern
\dx+
[psql] Liste les extensions avec objets
\dy
[psql] Liste les event triggers
+pattern
\dRp
[psql] Liste les publications
+pattern
\dRs
[psql] Liste les souscriptions
+pattern
\sf nom_fonction
[psql] Affiche le code source d'une fonction
+
\sv nom_vue
[psql] Affiche la définition d'une vue
+
\dm nom_vue_mat
[psql] Affiche la définition d'une vue matérialisée
+
\i fichier.sql
[psql] Exécute un fichier SQL
\o fichier.txt
[psql] Redirige la sortie vers un fichier
\o
[psql] Arrête la redirection de sortie
\copy table FROM 'fichier.csv' DELIMITER ',' CSV HEADER
[psql] Importe un CSV dans une table
FROMTODELIMITERCSVHEADERQUOTEESCAPEENCODING
\copy (SELECT * FROM users) TO 'export.csv' CSV HEADER
[psql] Exporte une requête en CSV
\x
[psql] Active/désactive l'affichage étendu
onoffauto
\x auto
[psql] Affichage étendu automatique
\timing
[psql] Active/désactive le chronométrage des requêtes
onoff
\set nom_valeur valeur
[psql] Définit une variable
\unset nom_valeur
[psql] Supprime une variable
\echo 'message'
[psql] Affiche un message
\qecho 'message'
[psql] Affiche dans la sortie de requête
\warn 'message'
[psql] Affiche un avertissement
\watch 5
[psql] Répète la dernière requête toutes les 5s
intervalle
\g
[psql] Exécute la requête précédente
fichier|commande
\gx
[psql] Exécute en mode étendu
\p
[psql] Affiche le buffer de requête
\r
[psql] Efface le buffer de requête
\w fichier.sql
[psql] Sauvegarde le buffer dans un fichier
\e
[psql] Ouvre l'éditeur pour éditer la requête
fichier
\ef nom_fonction
[psql] Édite une fonction dans l'éditeur
\ev nom_vue
[psql] Édite une vue dans l'éditeur
\encoding
[psql] Affiche/définit l'encodage client
encodage
\encoding UTF8
[psql] Définit l'encodage UTF-8
\pset border 2
[psql] Style de tableau (0=ascii, 1=unicode, 2=markdown)
borderformatlinestylenullfieldseptuples_onlytitlepagerfooter
\pset format html
[psql] Sortie au format HTML
unalignedalignedwrappedhtmlasciidoclatextroff-ms
\pset pager always
[psql] Utilise toujours un pager
alwaysnever
\pset null '(null)'
[psql] Affiche '(null)' pour les NULL
\pset title 'Résultats'
[psql] Définit un titre
\H
[psql] Active/désactive la sortie HTML
\a
[psql] Active/désactive l'alignement
\t
[psql] Active/désactive l'affichage des en-têtes
\conninfo
[psql] Affiche les informations de connexion
\q
[psql] Quitte psql
\! commande
[psql] Exécute une commande shell
\cd /chemin
[psql] Change de répertoire
\s
[psql] Affiche l'historique des commandes
fichier
\s historique.txt
[psql] Sauvegarde l'historique
CREATE DATABASE mabase
[SQL] Crée une base de données
OWNERTEMPLATEENCODINGLC_COLLATELC_CTYPETABLESPACEALLOW_CONNECTIONSCONNECTION LIMITIS_TEMPLATE
CREATE DATABASE mabase OWNER monuser ENCODING 'UTF8' LC_COLLATE 'fr_FR.UTF-8' LC_CTYPE 'fr_FR.UTF-8' TEMPLATE template0
[SQL] Crée une base complète
DROP DATABASE mabase
[SQL] Supprime une base de données
IF EXISTSWITH (FORCE)
DROP DATABASE IF EXISTS mabase WITH (FORCE)
[SQL] Force la suppression (déconnecte les utilisateurs)
CREATE SCHEMA monschema
[SQL] Crée un schéma
AUTHORIZATIONIF NOT EXISTS
CREATE SCHEMA IF NOT EXISTS monschema AUTHORIZATION monuser
[SQL] Crée un schéma pour un utilisateur
DROP SCHEMA monschema
[SQL] Supprime un schéma
IF EXISTSCASCADERESTRICT
DROP SCHEMA IF EXISTS monschema CASCADE
[SQL] Supprime un schéma et tous ses objets
CREATE TABLE users (id SERIAL PRIMARY KEY, name VARCHAR(100), email VARCHAR(255) UNIQUE, created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP)
[SQL] Crée une table avec SERIAL
CREATE TABLE users (id INT GENERATED ALWAYS AS IDENTITY PRIMARY KEY, name TEXT NOT NULL)
[SQL] Crée une table avec IDENTITY (standard SQL)
GENERATED ALWAYSGENERATED BY DEFAULT
CREATE TABLE users (id BIGSERIAL PRIMARY KEY, data JSONB, tags TEXT[], settings HSTORE)
[SQL] Table avec types PostgreSQL (JSONB, array, HSTORE)
CREATE TABLE logs (id SERIAL, message TEXT, created_at TIMESTAMPTZ DEFAULT NOW()) PARTITION BY RANGE (created_at)
[SQL] Table partitionnée
PARTITION BY RANGEPARTITION BY LISTPARTITION BY HASH
CREATE TABLE logs_2024 PARTITION OF logs FOR VALUES FROM ('2024-01-01') TO ('2025-01-01')
[SQL] Partition pour 2024
CREATE TEMPORARY TABLE temp_data (id INT, value TEXT)
[SQL] Table temporaire (session)
TEMPTEMPORARYUNLOGGEDIF NOT EXISTS
CREATE UNLOGGED TABLE cache (key TEXT PRIMARY KEY, value JSONB)
[SQL] Table non journalisée (plus rapide, non répliquée)
UNLOGGED
ALTER TABLE users ADD COLUMN age INT
[SQL] Ajoute une colonne
IF NOT EXISTS
ALTER TABLE users ADD COLUMN age INT DEFAULT 0 NOT NULL
[SQL] Ajoute avec contraintes
ALTER TABLE users DROP COLUMN age
[SQL] Supprime une colonne
IF EXISTSCASCADERESTRICT
ALTER TABLE users RENAME COLUMN name TO full_name
[SQL] Renomme une colonne
ALTER TABLE users ALTER COLUMN age TYPE BIGINT
[SQL] Change le type d'une colonne
USING
ALTER TABLE users ALTER COLUMN age TYPE VARCHAR(10) USING age::VARCHAR(10)
[SQL] Change le type avec conversion
USING
ALTER TABLE users ALTER COLUMN email SET NOT NULL
[SQL] Ajoute une contrainte NOT NULL
SET NOT NULLDROP NOT NULL
ALTER TABLE users ALTER COLUMN age SET DEFAULT 18
[SQL] Définit une valeur par défaut
SET DEFAULTDROP DEFAULT
ALTER TABLE users ADD CONSTRAINT unique_email UNIQUE (email)
[SQL] Ajoute une contrainte UNIQUE
ALTER TABLE users ADD CONSTRAINT pk_users PRIMARY KEY (id)
[SQL] Ajoute une clé primaire
USING INDEX TABLESPACE
ALTER TABLE orders ADD CONSTRAINT fk_user FOREIGN KEY (user_id) REFERENCES users(id) ON DELETE CASCADE
[SQL] Ajoute une clé étrangère
ON DELETEON UPDATEDEFERRABLENOT VALID
ALTER TABLE users ADD CONSTRAINT age_check CHECK (age >= 0)
[SQL] Ajoute une contrainte CHECK
NOT VALID
ALTER TABLE users DROP CONSTRAINT age_check
[SQL] Supprime une contrainte
IF EXISTSCASCADERESTRICT
ALTER TABLE users RENAME TO clients
[SQL] Renomme une table
ALTER TABLE users SET SCHEMA public
[SQL] Déplace une table dans un autre schéma
DROP TABLE users
[SQL] Supprime une table
IF EXISTSCASCADERESTRICT
TRUNCATE TABLE users
[SQL] Vide une table
RESTART IDENTITYCONTINUE IDENTITYCASCADERESTRICT
TRUNCATE TABLE users RESTART IDENTITY CASCADE
[SQL] Vide et réinitialise les séquences
CREATE INDEX idx_users_email ON users(email)
[SQL] Crée un index
UNIQUECONCURRENTLYIF NOT EXISTSUSINGTABLESPACEWHEREINCLUDE
CREATE INDEX CONCURRENTLY idx_users_email ON users(email)
[SQL] Crée un index sans bloquer
CONCURRENTLY
CREATE UNIQUE INDEX idx_users_email ON users(email)
[SQL] Index unique
UNIQUE
CREATE INDEX idx_users_partial ON users(email) WHERE active = true
[SQL] Index partiel
WHERE
CREATE INDEX idx_users_gin ON users USING GIN (tags)
[SQL] Index GIN (tableaux, JSONB)
USING
CREATE INDEX idx_users_gist ON locations USING GIST (coordinates)
[SQL] Index GiST (géospatial)
USING
CREATE INDEX idx_users_brin ON logs USING BRIN (created_at)
[SQL] Index BRIN (grandes tables)
USING
CREATE INDEX idx_users_hash ON users USING HASH (email)
[SQL] Index HASH
USING
CREATE INDEX idx_users_covering ON users(email) INCLUDE (name, age)
[SQL] Index couvrant (INCLUDE)
INCLUDE
DROP INDEX idx_users_email
[SQL] Supprime un index
CONCURRENTLYIF EXISTSCASCADERESTRICT
REINDEX INDEX idx_users_email
[SQL] Reconstruit un index
CONCURRENTLY
REINDEX TABLE users
[SQL] Reconstruit tous les index d'une table
CONCURRENTLY
REINDEX SCHEMA public
[SQL] Reconstruit les index d'un schéma
CONCURRENTLY
REINDEX DATABASE mabase
[SQL] Reconstruit les index d'une base
CONCURRENTLY
CLUSTER users USING idx_users_email
[SQL] Réorganise physiquement selon l'index
VERBOSE
VACUUM users
[SQL] Nettoie les tuples morts
FULLFREEZEVERBOSEANALYZESKIP_LOCKEDPARALLEL
VACUUM FULL VERBOSE users
[SQL] VACUUM FULL avec logs
VACUUM FREEZE users
[SQL] VACUUM avec freeze
ANALYZE users
[SQL] Met à jour les statistiques
VERBOSESKIP_LOCKED
CREATE VIEW active_users AS SELECT * FROM users WHERE active = true
[SQL] Crée une vue
OR REPLACETEMPRECURSIVEWITH CHECK OPTION
CREATE OR REPLACE VIEW active_users AS SELECT id, name FROM users WHERE active = true
[SQL] Remplace une vue existante
CREATE MATERIALIZED VIEW user_stats AS SELECT city, COUNT(*) FROM users GROUP BY city
[SQL] Vue matérialisée
WITH DATAWITH NO DATATABLESPACE
REFRESH MATERIALIZED VIEW user_stats
[SQL] Rafraîchit une vue matérialisée
CONCURRENTLYWITH DATAWITH NO DATA
REFRESH MATERIALIZED VIEW CONCURRENTLY user_stats
[SQL] Rafraîchit sans bloquer
CONCURRENTLY
DROP MATERIALIZED VIEW user_stats
[SQL] Supprime une vue matérialisée
IF EXISTSCASCADERESTRICT
CREATE SEQUENCE user_id_seq START 1000 INCREMENT 1
[SQL] Crée une séquence
INCREMENTMINVALUEMAXVALUESTARTCACHECYCLEOWNED BY
SELECT nextval('user_id_seq')
[SQL] Valeur suivante d'une séquence
SELECT currval('user_id_seq')
[SQL] Valeur courante d'une séquence
ALTER SEQUENCE user_id_seq RESTART WITH 2000
[SQL] Redémarre une séquence
RESTARTRENAME TOOWNED BY
DROP SEQUENCE user_id_seq
[SQL] Supprime une séquence
IF EXISTSCASCADERESTRICT
CREATE ROLE monuser WITH LOGIN PASSWORD 'secret'
[SQL] Crée un rôle avec connexion
SUPERUSERNOSUPERUSERCREATEDBNOCREATEDBCREATEROLENOCREATEROLEINHERITNOINHERITLOGINNOLOGINREPLICATIONNOREPLICATIONBYPASSRLSNOBYPASSRLSCONNECTION LIMITVALID UNTILIN ROLEROLEADMIN
CREATE USER monuser WITH PASSWORD 'secret'
[SQL] Alias de CREATE ROLE avec LOGIN
ALTER ROLE monuser WITH PASSWORD 'newsecret'
[SQL] Modifie le mot de passe
ALTER ROLE monuser RENAME TO newuser
[SQL] Renomme un rôle
DROP ROLE monuser
[SQL] Supprime un rôle
IF EXISTS
GRANT SELECT, INSERT, UPDATE ON users TO monuser
[SQL] Donne des privilèges sur une table
WITH GRANT OPTION
GRANT ALL PRIVILEGES ON ALL TABLES IN SCHEMA public TO monuser
[SQL] Donne tous les droits sur toutes les tables
GRANT USAGE ON SCHEMA public TO monuser
[SQL] Permet d'utiliser le schéma
GRANT CONNECT ON DATABASE mabase TO monuser
[SQL] Permet de se connecter à la base
GRANT EXECUTE ON FUNCTION get_users() TO monuser
[SQL] Permet d'exécuter une fonction
REVOKE INSERT, UPDATE ON users FROM monuser
[SQL] Révoque des privilèges
GRANT OPTION FORCASCADERESTRICT
REVOKE ALL PRIVILEGES ON users FROM monuser
[SQL] Révoque tous les privilèges
BEGIN
[SQL] Démarre une transaction
WORKTRANSACTIONISOLATION LEVELREAD ONLYREAD WRITEDEFERRABLE
BEGIN ISOLATION LEVEL SERIALIZABLE
[SQL] Transaction avec isolation SERIALIZABLE
BEGIN READ ONLY
[SQL] Transaction en lecture seule
COMMIT
[SQL] Valide une transaction
WORKTRANSACTIONAND CHAINAND NO CHAIN
ROLLBACK
[SQL] Annule une transaction
WORKTRANSACTIONAND CHAINAND NO CHAINTO SAVEPOINT
SAVEPOINT sp1
[SQL] Crée un point de sauvegarde
ROLLBACK TO SAVEPOINT sp1
[SQL] Revient à un point de sauvegarde
RELEASE SAVEPOINT sp1
[SQL] Supprime un point de sauvegarde
EXPLAIN SELECT * FROM users WHERE email = 'test@example.com'
[SQL] Affiche le plan d'exécution
ANALYZEVERBOSECOSTSBUFFERSWALTIMINGSUMMARYFORMAT
EXPLAIN ANALYZE SELECT * FROM users WHERE email = 'test@example.com'
[SQL] Exécute et analyse la requête
ANALYZEBUFFERSVERBOSE
EXPLAIN (ANALYZE, BUFFERS, VERBOSE) SELECT * FROM users
[SQL] Analyse détaillée
EXPLAIN (FORMAT JSON) SELECT * FROM users
[SQL] Plan au format JSON
FORMAT TEXTFORMAT XMLFORMAT YAML
SELECT pg_size_pretty(pg_database_size('mabase'))
[SQL] Taille de la base en format lisible
SELECT pg_size_pretty(pg_total_relation_size('users'))
[SQL] Taille d'une table (avec index)
SELECT pg_size_pretty(pg_relation_size('users'))
[SQL] Taille d'une table (sans index)
SELECT pg_size_pretty(pg_indexes_size('users'))
[SQL] Taille des index d'une table
SELECT schemaname, tablename, pg_size_pretty(pg_total_relation_size(schemaname||'.'||tablename)) FROM pg_tables ORDER BY pg_total_relation_size(schemaname||'.'||tablename) DESC LIMIT 10
[SQL] Top 10 des plus grandes tables
SELECT * FROM pg_stat_activity
[SQL] Activité en cours
WHERE state = 'active'WHERE wait_event IS NOT NULL
SELECT pg_terminate_backend(pid) FROM pg_stat_activity WHERE pid <> pg_backend_pid()
[SQL] Tue toutes les autres connexions
SELECT pg_terminate_backend(pid) FROM pg_stat_activity WHERE datname = 'mabase' AND pid <> pg_backend_pid()
[SQL] Tue les connexions d'une base
SELECT pg_cancel_backend(12345)
[SQL] Annule une requête (sans tuer la connexion)
SELECT * FROM pg_stat_replication
[SQL] État de la réplication
SELECT * FROM pg_replication_slots
[SQL] Slots de réplication
SELECT pg_create_physical_replication_slot('slot1')
[SQL] Crée un slot de réplication physique
SELECT pg_drop_replication_slot('slot1')
[SQL] Supprime un slot de réplication
SELECT pg_create_logical_replication_slot('slot1', 'test_decoding')
[SQL] Crée un slot de réplication logique
SELECT * FROM pg_publication
[SQL] Liste les publications
CREATE PUBLICATION pub1 FOR TABLE users, orders
[SQL] Crée une publication
FOR ALL TABLESFOR TABLEWITH (publish = 'insert,update,delete')
SELECT * FROM pg_subscription
[SQL] Liste les souscriptions
CREATE SUBSCRIPTION sub1 CONNECTION 'host=remote port=5432 dbname=mabase user=postgres' PUBLICATION pub1
[SQL] Crée une souscription
WITH (enabled = false, create_slot = false, slot_name = none)
ALTER SUBSCRIPTION sub1 REFRESH PUBLICATION
[SQL] Rafraîchit une souscription
WITH (copy_data = false)
DROP SUBSCRIPTION sub1
[SQL] Supprime une souscription
SELECT pg_reload_conf()
[SQL] Recharge la configuration
SELECT pg_rotate_logfile()
[SQL] Rotation des logs
SELECT pg_switch_wal()
[SQL] Force le switch des WAL
SELECT pg_current_wal_lsn()
[SQL] LSN courant des WAL
SELECT pg_walfile_name(pg_current_wal_lsn())
[SQL] Nom du fichier WAL courant
SELECT pg_ls_dir('pg_wal')
[SQL] Liste les fichiers WAL
SELECT pg_stat_reset()
[SQL] Réinitialise les statistiques
SELECT pg_stat_reset_shared('bgwriter')
[SQL] Réinitialise les stats du bgwriter
SELECT pg_sleep(5)
[SQL] Pause de 5 secondes
SELECT pg_advisory_lock(12345)
[SQL] Pose un verrou applicatif
SELECT pg_advisory_unlock(12345)
[SQL] Libère un verrou applicatif
SELECT pg_try_advisory_lock(12345)
[SQL] Tente de poser un verrou
SELECT locktype, relation::regclass, mode, granted FROM pg_locks WHERE NOT granted
[SQL] Verrous en attente
SELECT a.datname, a.usename, a.query, l.mode, l.granted FROM pg_stat_activity a JOIN pg_locks l ON a.pid = l.pid WHERE NOT l.granted
[SQL] Requêtes bloquées
SELECT * FROM pg_available_extensions
[SQL] Extensions disponibles
CREATE EXTENSION IF NOT EXISTS "uuid-ossp"
[SQL] Installe l'extension uuid-ossp
SCHEMAVERSIONCASCADE
CREATE EXTENSION IF NOT EXISTS postgis
[SQL] Installe PostGIS
CREATE EXTENSION IF NOT EXISTS pg_stat_statements
[SQL] Installe pg_stat_statements
DROP EXTENSION "uuid-ossp"
[SQL] Supprime une extension
IF EXISTSCASCADERESTRICT
ALTER EXTENSION "uuid-ossp" UPDATE
[SQL] Met à jour une extension
TO 'version'
SELECT * FROM pg_stat_statements ORDER BY total_time DESC LIMIT 10
[SQL] Top 10 des requêtes les plus lentes
SELECT pg_stat_statements_reset()
[SQL] Réinitialise pg_stat_statements
SHOW config_file
[SQL] Affiche le chemin du fichier de configuration
SHOW data_directory
[SQL] Affiche le répertoire des données
SHOW hba_file
[SQL] Affiche le chemin du fichier pg_hba.conf
SHOW all
[SQL] Affiche tous les paramètres
SHOW shared_buffers
[SQL] Affiche un paramètre spécifique
SET work_mem = '64MB'
[SQL] Modifie un paramètre pour la session
SESSIONLOCAL
ALTER SYSTEM SET work_mem = '64MB'
[SQL] Modifie un paramètre dans postgresql.auto.conf
ALTER SYSTEM RESET work_mem
[SQL] Réinitialise un paramètre système
ALL
SELECT * FROM pg_settings WHERE name LIKE '%memory%'
[SQL] Recherche des paramètres
SELECT * FROM pg_file_settings
[SQL] Paramètres dans les fichiers de configuration
SELECT current_database()
[SQL] Base de données courante
SELECT current_user
[SQL] Utilisateur courant
SELECT session_user
[SQL] Utilisateur de session
SELECT inet_server_addr()
[SQL] Adresse IP du serveur
SELECT inet_server_port()
[SQL] Port du serveur
SELECT inet_client_addr()
[SQL] Adresse IP du client
SELECT pg_backend_pid()
[SQL] PID de la session courante
SELECT pg_postmaster_start_time()
[SQL] Date de démarrage du serveur
SELECT pg_conf_load_time()
[SQL] Date de chargement de la configuration
SELECT txid_current()
[SQL] ID de transaction courant
SELECT txid_status(12345)
[SQL] Statut d'une transaction
SELECT pg_is_in_recovery()
[SQL] Vérifie si le serveur est en recovery (standby)
SELECT pg_is_wal_replay_paused()
[SQL] Vérifie si le replay WAL est en pause
SELECT pg_promote()
[SQL] Promeut un standby en primary
waitwait_seconds
SELECT pg_wal_replay_pause()
[SQL] Met en pause le replay WAL
SELECT pg_wal_replay_resume()
[SQL] Reprend le replay WAL