
Base de données
PostgreSQL — commandes essentielles
Les commandes PostgreSQL essentielles pour utiliser psql, créer et interroger des bases, gérer tables, rôles, permissions, index, transactions, sauvegardes, performances et maintenance.
201commandesMis à jour le25 août 2026NiveauIntermédiaire
Aucune commande ne correspond à ce choix et à votre recherche.
Connexion
8 commandes| Commande | Description | Exemple | Risque |
|---|---|---|---|
psql | Ouvre le client interactif PostgreSQL avec les paramètres de connexion par défaut. | psql | Sûr |
psql -U | Se connecte à PostgreSQL avec un rôle précis. | psql -U postgres | Sûr |
psql -d | Se connecte directement à une base de données. | psql -d application | Sûr |
psql -h | Indique l'hôte PostgreSQL auquel se connecter. | psql -h localhost -U application -d application | Sûr |
psql -p | Indique explicitement le port du serveur PostgreSQL. | psql -h localhost -p 5432 -U application | Sûr |
psql URI | Se connecte en utilisant une URI PostgreSQL. Éviter d'inscrire un mot de passe directement dans l'historique du terminal. | psql postgresql://application@localhost:5432/application | Attention |
\conninfo | Affiche les informations concernant la connexion PostgreSQL actuellement utilisée. | \conninfo | Sûr |
\q | Quitte le terminal interactif psql. | \q | Sûr |
Aide & découverte
6 commandes| Commande | Description | Exemple | Risque |
|---|---|---|---|
\? | Affiche l'aide concernant les méta-commandes disponibles dans psql. | \? | Sûr |
\h | Affiche la liste des commandes SQL pour lesquelles psql peut fournir de l'aide. | \h | Sûr |
\h <commande> | Affiche la syntaxe et l'aide d'une instruction SQL particulière. | \h CREATE TABLE | Sûr |
SELECT version(); | Affiche la version du serveur PostgreSQL auquel la session est connectée. | SELECT version(); | Sûr |
SHOW server_version; | Affiche la version du serveur PostgreSQL sous une forme concise. | SHOW server_version; | Sûr |
\timing | Active ou désactive l'affichage du temps d'exécution des commandes dans psql. | \timing | Sûr |
Bases de données
9 commandes| Commande | Description | Exemple | Risque |
|---|---|---|---|
\l | Liste les bases de données accessibles depuis le serveur PostgreSQL. | \l | Sûr |
\l+ | Liste les bases avec des informations supplémentaires comme leur taille et leur description. | \l+ | Sûr |
CREATE DATABASE | Crée une nouvelle base de données. | CREATE DATABASE application; | Sûr |
CREATE DATABASE ... OWNER | Crée une base en définissant explicitement son propriétaire. | CREATE DATABASE application OWNER app_user; | Sûr |
\c | Change la base utilisée par la session psql. | \c application | Sûr |
\c base utilisateur | Change simultanément de base et de rôle de connexion. | \c application app_user | Sûr |
ALTER DATABASE | Modifie certaines propriétés d'une base de données existante. | ALTER DATABASE application RENAME TO application_prod; | Attention |
DROP DATABASE | Supprime définitivement une base de données et toutes les données qu'elle contient. | DROP DATABASE application; | Danger |
DROP DATABASE IF EXISTS | Supprime une base uniquement lorsqu'elle existe. | DROP DATABASE IF EXISTS application_test; | Danger |
Schémas
7 commandes| Commande | Description | Exemple | Risque |
|---|---|---|---|
\dn | Liste les schémas présents dans la base courante. | \dn | Sûr |
\dn+ | Affiche les schémas avec des informations supplémentaires. | \dn+ | Sûr |
CREATE SCHEMA | Crée un nouveau schéma permettant d'organiser les objets d'une base. | CREATE SCHEMA ecommerce; | Sûr |
CREATE SCHEMA AUTHORIZATION | Crée un schéma en définissant explicitement son propriétaire. | CREATE SCHEMA ecommerce AUTHORIZATION app_user; | Sûr |
SET search_path | Définit l'ordre dans lequel PostgreSQL recherche les objets non qualifiés pendant la session. | SET search_path TO ecommerce, public; | Attention |
DROP SCHEMA | Supprime un schéma vide. | DROP SCHEMA ecommerce; | Attention |
DROP SCHEMA CASCADE | Supprime le schéma ainsi que les objets qui en dépendent. | DROP SCHEMA ecommerce CASCADE; | Danger |
Tables
12 commandes| Commande | Description | Exemple | Risque |
|---|---|---|---|
\dt | Liste les tables visibles dans le search_path courant. | \dt | Sûr |
\dt *.* | Liste les tables de l'ensemble des schémas accessibles. | \dt *.* | Sûr |
\d <table> | Affiche la structure d'une table : colonnes, types, contraintes et index. | \d users | Sûr |
\d+ <table> | Affiche une description plus détaillée de la table. | \d+ users | Sûr |
CREATE TABLE | Crée une nouvelle table. | CREATE TABLE users (id BIGINT GENERATED ALWAYS AS IDENTITY PRIMARY KEY, email TEXT NOT NULL UNIQUE); | Sûr |
CREATE TABLE IF NOT EXISTS | Crée une table uniquement lorsqu'aucune relation portant ce nom n'existe déjà. | CREATE TABLE IF NOT EXISTS users (id BIGINT GENERATED ALWAYS AS IDENTITY PRIMARY KEY); | Sûr |
ALTER TABLE ADD COLUMN | Ajoute une nouvelle colonne à une table existante. | ALTER TABLE users ADD COLUMN created_at TIMESTAMPTZ NOT NULL DEFAULT now(); | Attention |
ALTER TABLE RENAME COLUMN | Renomme une colonne existante. | ALTER TABLE users RENAME COLUMN name TO username; | Attention |
ALTER TABLE DROP COLUMN | Supprime définitivement une colonne et les données qu'elle contient. | ALTER TABLE users DROP COLUMN old_field; | Danger |
TRUNCATE | Supprime rapidement toutes les lignes d'une table sans supprimer sa structure. | TRUNCATE TABLE logs; | Danger |
DROP TABLE | Supprime définitivement une table. | DROP TABLE users; | Danger |
DROP TABLE IF EXISTS | Supprime la table uniquement lorsqu'elle existe. | DROP TABLE IF EXISTS temp_import; | Danger |
Types de données
11 commandes| Commande | Description | Exemple | Risque |
|---|---|---|---|
INTEGER | Type entier signé classique. | age INTEGER | Sûr |
BIGINT | Type entier utilisant une plage plus importante qu'INTEGER. | counter BIGINT | Sûr |
NUMERIC | Type numérique exact adapté notamment aux valeurs nécessitant une précision décimale contrôlée. | price NUMERIC(10,2) | Sûr |
TEXT | Chaîne de caractères de longueur variable sans limite arbitraire définie par le type. | description TEXT | Sûr |
BOOLEAN | Stocke une valeur booléenne. | active BOOLEAN NOT NULL DEFAULT true | Sûr |
DATE | Stocke une date sans heure. | birth_date DATE | Sûr |
TIMESTAMP | Stocke une date et une heure sans information de fuseau horaire. | scheduled_at TIMESTAMP | Sûr |
TIMESTAMPTZ | Stocke un instant temporel avec gestion du fuseau horaire par PostgreSQL. Souvent préférable pour les événements réels. | created_at TIMESTAMPTZ NOT NULL DEFAULT now() | Sûr |
UUID | Type natif destiné au stockage d'identifiants UUID. | id UUID PRIMARY KEY | Sûr |
JSONB | Stocke des documents JSON sous une représentation binaire optimisée pour leur interrogation et leur indexation. | metadata JSONB NOT NULL DEFAULT '{}'::jsonb | Sûr |
ARRAY | PostgreSQL permet à une colonne de contenir un tableau d'un type donné. | tags TEXT[] | Sûr |
Contraintes
8 commandes| Commande | Description | Exemple | Risque |
|---|---|---|---|
PRIMARY KEY | Identifie de manière unique chaque ligne de la table. | id BIGINT GENERATED ALWAYS AS IDENTITY PRIMARY KEY | Sûr |
NOT NULL | Interdit les valeurs NULL dans une colonne. | email TEXT NOT NULL | Sûr |
UNIQUE | Impose l'unicité des valeurs concernées. | email TEXT UNIQUE | Sûr |
CHECK | Impose une condition aux données enregistrées. | CHECK (price >= 0) | Sûr |
DEFAULT | Définit une valeur utilisée lorsque la colonne n'est pas fournie lors de l'insertion. | created_at TIMESTAMPTZ DEFAULT now() | Sûr |
FOREIGN KEY | Crée une relation d'intégrité référentielle avec une clé d'une autre table. | FOREIGN KEY (user_id) REFERENCES users(id) | Sûr |
ON DELETE CASCADE | Supprime automatiquement les lignes dépendantes lorsque la ligne référencée est supprimée. | REFERENCES users(id) ON DELETE CASCADE | Attention |
ON DELETE SET NULL | Place la clé étrangère à NULL lorsque la ligne référencée est supprimée. | REFERENCES users(id) ON DELETE SET NULL | Attention |
Insertion
5 commandes| Commande | Description | Exemple | Risque |
|---|---|---|---|
INSERT INTO | Ajoute une nouvelle ligne dans une table. | INSERT INTO users (email, username) VALUES ('alice@example.com', 'alice'); | Sûr |
INSERT plusieurs lignes | Insère plusieurs lignes en une seule instruction. | INSERT INTO tags (name) VALUES ('docker'), ('linux'), ('postgresql'); | Sûr |
INSERT ... RETURNING | Retourne immédiatement des colonnes de la ligne créée. | INSERT INTO users (email) VALUES ('alice@example.com') RETURNING id; | Sûr |
INSERT ... ON CONFLICT DO NOTHING | Ignore une insertion lorsqu'elle provoquerait le conflit d'unicité ciblé. | INSERT INTO users (email) VALUES ('alice@example.com') ON CONFLICT (email) DO NOTHING; | Sûr |
INSERT ... ON CONFLICT DO UPDATE | Implémente un upsert en mettant à jour la ligne lorsqu'un conflit correspondant survient. | INSERT INTO users (email, username) VALUES ('alice@example.com', 'alice') ON CONFLICT (email) DO UPDATE SET username = EXCLUDED.username; | Attention |
Lecture des données
12 commandes| Commande | Description | Exemple | Risque |
|---|---|---|---|
SELECT | Lit des données depuis une ou plusieurs relations. | SELECT id, email FROM users; | Sûr |
SELECT * | Sélectionne toutes les colonnes. Pratique pour l'exploration mais souvent à éviter dans les requêtes applicatives lorsque seules certaines colonnes sont nécessaires. | SELECT * FROM users; | Sûr |
WHERE | Filtre les lignes selon une condition. | SELECT * FROM users WHERE active = true; | Sûr |
ORDER BY | Trie le résultat selon une ou plusieurs expressions. | SELECT * FROM users ORDER BY created_at DESC; | Sûr |
LIMIT | Limite le nombre de lignes retournées. | SELECT * FROM users ORDER BY id LIMIT 20; | Sûr |
OFFSET | Ignore un nombre déterminé de lignes avant de retourner le résultat. | SELECT * FROM users ORDER BY id LIMIT 20 OFFSET 40; | Sûr |
DISTINCT | Élimine les doublons du résultat. | SELECT DISTINCT country FROM users; | Sûr |
BETWEEN | Teste si une valeur se trouve dans un intervalle inclusif. | SELECT * FROM products WHERE price BETWEEN 10 AND 50; | Sûr |
IN | Teste si une valeur appartient à un ensemble donné. | SELECT * FROM users WHERE role IN ('admin', 'editor'); | Sûr |
IS NULL | Recherche les valeurs SQL NULL. | SELECT * FROM users WHERE deleted_at IS NULL; | Sûr |
LIKE | Recherche un motif textuel sensible à la casse selon la collation et les données. | SELECT * FROM users WHERE email LIKE '%@example.com'; | Sûr |
ILIKE | Extension PostgreSQL permettant une recherche de motif insensible à la casse selon les règles applicables. | SELECT * FROM users WHERE username ILIKE 'alice%'; | Sûr |
Agrégations
7 commandes| Commande | Description | Exemple | Risque |
|---|---|---|---|
COUNT | Compte les lignes ou valeurs correspondant à la requête. | SELECT COUNT(*) FROM users; | Sûr |
SUM | Calcule la somme des valeurs. | SELECT SUM(total) FROM orders; | Sûr |
AVG | Calcule la moyenne. | SELECT AVG(price) FROM products; | Sûr |
MIN | Retourne la valeur minimale. | SELECT MIN(price) FROM products; | Sûr |
MAX | Retourne la valeur maximale. | SELECT MAX(price) FROM products; | Sûr |
GROUP BY | Regroupe les lignes avant l'application des fonctions d'agrégation. | SELECT status, COUNT(*) FROM orders GROUP BY status; | Sûr |
HAVING | Filtre les groupes après leur agrégation. | SELECT user_id, COUNT(*) FROM orders GROUP BY user_id HAVING COUNT(*) > 10; | Sûr |
Jointures
5 commandes| Commande | Description | Exemple | Risque |
|---|---|---|---|
INNER JOIN | Retourne les lignes possédant une correspondance selon la condition de jointure. | SELECT u.email, o.id FROM users u INNER JOIN orders o ON o.user_id = u.id; | Sûr |
LEFT JOIN | Conserve toutes les lignes de la relation de gauche même lorsqu'aucune correspondance n'existe à droite. | SELECT u.email, o.id FROM users u LEFT JOIN orders o ON o.user_id = u.id; | Sûr |
RIGHT JOIN | Conserve toutes les lignes de la relation de droite. | SELECT u.email, o.id FROM users u RIGHT JOIN orders o ON o.user_id = u.id; | Sûr |
FULL JOIN | Conserve les lignes des deux côtés, avec ou sans correspondance. | SELECT * FROM table_a FULL JOIN table_b ON table_a.id = table_b.id; | Sûr |
CROSS JOIN | Produit le produit cartésien des deux ensembles. Le nombre de lignes peut devenir très important. | SELECT * FROM sizes CROSS JOIN colors; | Attention |
Mise à jour
3 commandes| Commande | Description | Exemple | Risque |
|---|---|---|---|
UPDATE | Modifie les lignes correspondant à la condition WHERE. | UPDATE users SET active = false WHERE id = 42; | Attention |
UPDATE ... RETURNING | Modifie les données puis retourne les lignes affectées. | UPDATE users SET active = false WHERE id = 42 RETURNING *; | Attention |
UPDATE sans WHERE | Modifie toutes les lignes de la table. Vérifier impérativement la requête avant exécution. | UPDATE users SET active = false; | Danger |
Suppression
4 commandes| Commande | Description | Exemple | Risque |
|---|---|---|---|
DELETE | Supprime les lignes correspondant à une condition. | DELETE FROM sessions WHERE expires_at < now(); | Attention |
DELETE ... RETURNING | Supprime les lignes puis retourne les données supprimées. | DELETE FROM sessions WHERE id = 42 RETURNING *; | Attention |
DELETE sans WHERE | Supprime toutes les lignes de la table. | DELETE FROM sessions; | Danger |
TRUNCATE | Vide rapidement une table. À utiliser avec beaucoup de prudence. | TRUNCATE TABLE sessions; | Danger |
CTE & sous-requêtes
3 commandes| Commande | Description | Exemple | Risque |
|---|---|---|---|
WITH | Définit une Common Table Expression afin de structurer une requête complexe. | WITH active_users AS (SELECT * FROM users WHERE active = true) SELECT COUNT(*) FROM active_users; | Sûr |
WITH RECURSIVE | Permet de construire une requête récursive, utile notamment pour des données hiérarchiques. | WITH RECURSIVE tree AS (...) SELECT * FROM tree; | Sûr |
EXISTS | Teste l'existence d'au moins une ligne retournée par une sous-requête. | SELECT * FROM users u WHERE EXISTS (SELECT 1 FROM orders o WHERE o.user_id = u.id); | Sûr |
Transactions
6 commandes| Commande | Description | Exemple | Risque |
|---|---|---|---|
BEGIN | Démarre explicitement une transaction. | BEGIN; | Sûr |
COMMIT | Valide définitivement les modifications de la transaction courante. | COMMIT; | Attention |
ROLLBACK | Annule les modifications non validées de la transaction courante. | ROLLBACK; | Sûr |
SAVEPOINT | Crée un point intermédiaire à l'intérieur d'une transaction. | SAVEPOINT avant_modification; | Sûr |
ROLLBACK TO SAVEPOINT | Annule les modifications effectuées depuis un savepoint sans annuler toute la transaction. | ROLLBACK TO SAVEPOINT avant_modification; | Sûr |
RELEASE SAVEPOINT | Libère un savepoint devenu inutile. | RELEASE SAVEPOINT avant_modification; | Sûr |
Index
8 commandes| Commande | Description | Exemple | Risque |
|---|---|---|---|
\di | Liste les index visibles. | \di | Sûr |
CREATE INDEX | Crée un index sur une ou plusieurs colonnes afin d'accélérer certaines recherches au prix d'espace et de travail supplémentaire lors des écritures. | CREATE INDEX idx_users_email ON users(email); | Sûr |
CREATE UNIQUE INDEX | Crée un index imposant également l'unicité des valeurs indexées. | CREATE UNIQUE INDEX idx_users_email_unique ON users(email); | Sûr |
CREATE INDEX ... WHERE | Crée un index partiel uniquement sur les lignes correspondant à une condition. | CREATE INDEX idx_active_users ON users(email) WHERE active = true; | Sûr |
CREATE INDEX ... USING GIN | Crée un index GIN, notamment utile pour certains usages de JSONB, tableaux et recherche plein texte. | CREATE INDEX idx_products_metadata ON products USING GIN(metadata); | Sûr |
CREATE INDEX CONCURRENTLY | Construit un index en réduisant le blocage des écritures sur la table, au prix d'une opération généralement plus longue et avec des contraintes spécifiques. | CREATE INDEX CONCURRENTLY idx_users_created_at ON users(created_at); | Attention |
REINDEX | Reconstruit un index. | REINDEX INDEX idx_users_email; | Attention |
DROP INDEX | Supprime un index existant. | DROP INDEX idx_users_email; | Attention |
Analyse des performances
4 commandes| Commande | Description | Exemple | Risque |
|---|---|---|---|
EXPLAIN | Affiche le plan d'exécution estimé d'une requête sans exécuter normalement la requête elle-même. | EXPLAIN SELECT * FROM users WHERE email = 'alice@example.com'; | Sûr |
EXPLAIN ANALYZE | Exécute réellement la requête et affiche le plan avec les mesures observées. Attention avec UPDATE, DELETE ou INSERT : les modifications sont réellement exécutées. | EXPLAIN ANALYZE SELECT * FROM users WHERE email = 'alice@example.com'; | Attention |
EXPLAIN (ANALYZE, BUFFERS) | Ajoute notamment des informations sur l'utilisation des buffers au plan réellement exécuté. | EXPLAIN (ANALYZE, BUFFERS) SELECT * FROM orders WHERE user_id = 42; | Sûr |
EXPLAIN (ANALYZE, BUFFERS, VERBOSE) | Produit un diagnostic plus détaillé du plan d'exécution. | EXPLAIN (ANALYZE, BUFFERS, VERBOSE) SELECT * FROM orders WHERE user_id = 42; | Sûr |
JSONB
5 commandes| Commande | Description | Exemple | Risque |
|---|---|---|---|
-> | Extrait un champ ou élément JSON tout en conservant un résultat JSON. | SELECT metadata->'address' FROM users; | Sûr |
->> | Extrait une valeur JSON sous forme de texte. | SELECT metadata->>'language' FROM users; | Sûr |
@> | Teste si une valeur JSONB contient une autre structure JSONB. | SELECT * FROM users WHERE metadata @> '{"premium": true}'::jsonb; | Sûr |
? | Teste notamment l'existence d'une clé ou valeur de premier niveau dans un document JSONB. | SELECT * FROM users WHERE metadata ? 'premium'; | Sûr |
jsonb_set | Remplace ou ajoute une valeur à un chemin donné dans un document JSONB. | UPDATE users SET metadata = jsonb_set(metadata, '{theme}', '"dark"'::jsonb) WHERE id = 42; | Attention |
Utilisateurs & rôles
8 commandes| Commande | Description | Exemple | Risque |
|---|---|---|---|
\du | Liste les rôles PostgreSQL. | \du | Sûr |
\du+ | Liste les rôles avec des informations supplémentaires. | \du+ | Sûr |
CREATE ROLE | Crée un nouveau rôle PostgreSQL. | CREATE ROLE app_user; | Sûr |
CREATE ROLE ... LOGIN | Crée un rôle autorisé à ouvrir une session PostgreSQL. | CREATE ROLE app_user LOGIN; | Sûr |
CREATE ROLE ... PASSWORD | Crée un rôle de connexion avec mot de passe. Éviter d'exposer le secret dans les historiques ou fichiers non protégés. | CREATE ROLE app_user LOGIN PASSWORD 'mot-de-passe-a-remplacer'; | Attention |
ALTER ROLE | Modifie les attributs d'un rôle. | ALTER ROLE app_user SET statement_timeout = '30s'; | Attention |
ALTER ROLE ... PASSWORD | Modifie le mot de passe d'un rôle de connexion. | ALTER ROLE app_user PASSWORD 'nouveau-secret'; | Attention |
DROP ROLE | Supprime un rôle lorsqu'aucun objet ou privilège bloquant ne l'empêche. | DROP ROLE app_user; | Danger |
Permissions
9 commandes| Commande | Description | Exemple | Risque |
|---|---|---|---|
\dp | Affiche les privilèges associés aux tables, vues et séquences visibles. | \dp | Sûr |
GRANT CONNECT | Autorise un rôle à se connecter à une base. | GRANT CONNECT ON DATABASE application TO app_user; | Sûr |
GRANT USAGE ON SCHEMA | Autorise un rôle à accéder aux objets d'un schéma lorsqu'il possède également les privilèges nécessaires sur ces objets. | GRANT USAGE ON SCHEMA public TO app_user; | Sûr |
GRANT SELECT | Autorise la lecture d'une table. | GRANT SELECT ON TABLE products TO reporting_user; | Sûr |
GRANT SELECT, INSERT, UPDATE, DELETE | Accorde les principaux privilèges applicatifs sur une table. | GRANT SELECT, INSERT, UPDATE, DELETE ON TABLE users TO app_user; | Attention |
GRANT ... ON ALL TABLES | Accorde des privilèges sur toutes les tables existantes d'un schéma. | GRANT SELECT ON ALL TABLES IN SCHEMA public TO reporting_user; | Attention |
ALTER DEFAULT PRIVILEGES | Configure les privilèges qui seront automatiquement accordés sur certains futurs objets créés par le rôle concerné. | ALTER DEFAULT PRIVILEGES IN SCHEMA public GRANT SELECT ON TABLES TO reporting_user; | Attention |
REVOKE | Retire un privilège précédemment accordé. | REVOKE INSERT ON TABLE users FROM reporting_user; | Attention |
GRANT rôle TO rôle | Accorde l'appartenance à un rôle à un autre rôle. | GRANT readonly TO alice; | Attention |
Vues
5 commandes| Commande | Description | Exemple | Risque |
|---|---|---|---|
\dv | Liste les vues. | \dv | Sûr |
CREATE VIEW | Crée une vue basée sur une requête. | CREATE VIEW active_users AS SELECT id, email FROM users WHERE active = true; | Sûr |
CREATE MATERIALIZED VIEW | Crée une vue matérialisée dont le résultat est stocké physiquement. | CREATE MATERIALIZED VIEW monthly_stats AS SELECT date_trunc('month', created_at) month, COUNT(*) FROM orders GROUP BY 1; | Sûr |
REFRESH MATERIALIZED VIEW | Recalcule le contenu d'une vue matérialisée. | REFRESH MATERIALIZED VIEW monthly_stats; | Attention |
DROP VIEW | Supprime une vue. | DROP VIEW active_users; | Attention |
Import & export de données
3 commandes| Commande | Description | Exemple | Risque |
|---|---|---|---|
\copy ... TO | Exporte des données depuis psql vers un fichier accessible par la machine cliente. | \copy users TO './users.csv' CSV HEADER | Sûr |
\copy ... FROM | Importe un fichier accessible par le client psql dans une table. | \copy users(email, username) FROM './users.csv' CSV HEADER | Attention |
COPY | Importe ou exporte des données côté serveur PostgreSQL. Les permissions et chemins concernent alors le serveur. | COPY users TO STDOUT WITH CSV HEADER; | Attention |
Sauvegardes
7 commandes| Commande | Description | Exemple | Risque |
|---|---|---|---|
pg_dump | Effectue une sauvegarde logique d'une base PostgreSQL. | pg_dump application > application.sql | Sûr |
pg_dump -Fc | Crée une sauvegarde au format custom, particulièrement adaptée à une restauration avec pg_restore. | pg_dump -Fc -d application -f application.dump | Sûr |
pg_dump --schema-only | Sauvegarde uniquement la structure de la base. | pg_dump --schema-only application > schema.sql | Sûr |
pg_dump --data-only | Sauvegarde uniquement les données. | pg_dump --data-only application > data.sql | Sûr |
pg_dump -t | Sauvegarde uniquement une table ou un ensemble correspondant au motif indiqué. | pg_dump -d application -t users > users.sql | Sûr |
pg_dumpall | Produit une sauvegarde logique de l'ensemble des bases d'un cluster et peut inclure les objets globaux. | pg_dumpall > cluster.sql | Sûr |
pg_dumpall --globals-only | Sauvegarde les objets globaux du cluster, notamment les rôles et tablespaces. | pg_dumpall --globals-only > globals.sql | Sûr |
Restauration
5 commandes| Commande | Description | Exemple | Risque |
|---|---|---|---|
psql < sauvegarde.sql | Restaure un dump SQL texte en exécutant ses instructions dans la base cible. | psql -d application_restore < application.sql | Attention |
pg_restore | Restaure une archive créée par pg_dump dans un format pris en charge comme custom ou directory. | pg_restore -d application_restore application.dump | Attention |
pg_restore --list | Affiche le contenu d'une archive sans la restaurer. | pg_restore --list application.dump | Sûr |
pg_restore --clean | Supprime les objets concernés avant de les recréer pendant la restauration. | pg_restore --clean -d application_restore application.dump | Danger |
pg_restore -j | Utilise plusieurs jobs parallèles lorsque le format et l'opération le permettent. | pg_restore -j 4 -d application_restore application.dump | Attention |
Maintenance
7 commandes| Commande | Description | Exemple | Risque |
|---|---|---|---|
VACUUM | Effectue la maintenance des tuples devenus obsolètes et aide PostgreSQL à réutiliser l'espace correspondant. | VACUUM users; | Sûr |
VACUUM ANALYZE | Effectue un VACUUM puis met à jour les statistiques utilisées par le planificateur. | VACUUM ANALYZE users; | Sûr |
ANALYZE | Met à jour les statistiques utilisées pour choisir les plans d'exécution. | ANALYZE users; | Sûr |
VACUUM VERBOSE | Exécute VACUUM en affichant davantage d'informations sur l'opération. | VACUUM VERBOSE users; | Sûr |
VACUUM FULL | Réécrit la table pour récupérer davantage d'espace disque mais nécessite un verrou exclusif et peut être coûteux. | VACUUM FULL users; | Danger |
vacuumdb | Utilitaire en ligne de commande permettant d'effectuer VACUUM et ANALYZE depuis le shell. | vacuumdb -d application --analyze | Sûr |
reindexdb | Utilitaire en ligne de commande permettant de reconstruire des index. | reindexdb -d application | Attention |
Activité & connexions
4 commandes| Commande | Description | Exemple | Risque |
|---|---|---|---|
pg_stat_activity | Vue système permettant d'observer les sessions et requêtes connues du serveur. | SELECT pid, usename, datname, state, query FROM pg_stat_activity; | Sûr |
requêtes actives | Affiche les sessions actuellement actives avec leur durée. | SELECT pid, now() - query_start AS duration, query FROM pg_stat_activity WHERE state = 'active' ORDER BY duration DESC; | Sûr |
pg_cancel_backend | Demande l'annulation de la requête actuellement exécutée par une session. | SELECT pg_cancel_backend(12345); | Attention |
pg_terminate_backend | Demande la terminaison d'une session PostgreSQL. Les transactions non validées de cette session seront annulées. | SELECT pg_terminate_backend(12345); | Danger |
Taille & stockage
4 commandes| Commande | Description | Exemple | Risque |
|---|---|---|---|
pg_database_size | Retourne la taille occupée par une base de données. | SELECT pg_size_pretty(pg_database_size('application')); | Sûr |
pg_total_relation_size | Retourne la taille totale d'une relation en incluant notamment ses index et données auxiliaires concernées. | SELECT pg_size_pretty(pg_total_relation_size('users')); | Sûr |
pg_relation_size | Retourne la taille d'une relation ou d'un fork particulier selon l'utilisation. | SELECT pg_size_pretty(pg_relation_size('users')); | Sûr |
taille des tables | Classe les tables utilisateur selon leur taille totale. | SELECT relname, pg_size_pretty(pg_total_relation_size(relid)) FROM pg_catalog.pg_statio_user_tables ORDER BY pg_total_relation_size(relid) DESC; | Sûr |
Extensions
4 commandes| Commande | Description | Exemple | Risque |
|---|---|---|---|
\dx | Liste les extensions installées dans la base courante. | \dx | Sûr |
CREATE EXTENSION | Installe une extension disponible dans l'instance PostgreSQL. | CREATE EXTENSION IF NOT EXISTS pg_trgm; | Attention |
ALTER EXTENSION UPDATE | Met à jour une extension installée vers une version disponible compatible. | ALTER EXTENSION pg_trgm UPDATE; | Attention |
DROP EXTENSION | Supprime une extension et peut affecter les objets qui en dépendent. | DROP EXTENSION pg_trgm; | Danger |
psql pratique
7 commandes| Commande | Description | Exemple | Risque |
|---|---|---|---|
\x | Active ou désactive l'affichage étendu, très pratique pour les lignes possédant beaucoup de colonnes. | \x | Sûr |
\x auto | Utilise automatiquement l'affichage étendu lorsque le résultat est trop large pour l'affichage classique. | \x auto | Sûr |
\e | Ouvre l'éditeur configuré afin de modifier une requête. | \e | Sûr |
\i | Exécute les commandes contenues dans un fichier SQL. | \i migrations/001-init.sql | Attention |
\o | Redirige les résultats des requêtes suivantes vers un fichier. | \o resultat.txt | Sûr |
\watch | Répète périodiquement la dernière requête, pratique pour surveiller une métrique. | \watch 2 | Sûr |
\set ON_ERROR_STOP on | Demande à psql d'arrêter l'exécution d'un script lorsqu'une erreur survient. | \set ON_ERROR_STOP on | Sûr |
Diagnostic
7 commandes| Commande | Description | Exemple | Risque |
|---|---|---|---|
\conninfo | Vérifie immédiatement à quel serveur, base et utilisateur la session est connectée. | \conninfo | Sûr |
SELECT version() | Vérifie la version exacte du serveur. | SELECT version(); | Sûr |
SHOW ALL | Affiche les paramètres de configuration visibles dans la session. | SHOW ALL; | Sûr |
SHOW statement_timeout | Affiche le délai maximal configuré pour les instructions dans la session. | SHOW statement_timeout; | Sûr |
pg_stat_activity | Permet d'observer les connexions, états et requêtes du serveur. | SELECT pid, usename, state, wait_event_type, wait_event, query FROM pg_stat_activity; | Sûr |
EXPLAIN ANALYZE | Permet de diagnostiquer les performances réelles d'une requête. Ne pas oublier que la requête est exécutée. | EXPLAIN (ANALYZE, BUFFERS) SELECT * FROM orders WHERE user_id = 42; | Attention |
pg_blocking_pids | Retourne les PID des sessions bloquant une session donnée. | SELECT pid, pg_blocking_pids(pid) FROM pg_stat_activity WHERE cardinality(pg_blocking_pids(pid)) > 0; | Sûr |
À manipuler avec prudence
8 commandes| Commande | Description | Exemple | Risque |
|---|---|---|---|
DROP DATABASE | Supprime définitivement toute une base de données. | DROP DATABASE application; | Danger |
DROP TABLE | Supprime définitivement la table et ses données. | DROP TABLE users; | Danger |
TRUNCATE | Vide très rapidement une table. | TRUNCATE TABLE users; | Danger |
DELETE sans WHERE | Supprime toutes les lignes d'une table. | DELETE FROM users; | Danger |
UPDATE sans WHERE | Modifie toutes les lignes de la table. | UPDATE users SET active = false; | Danger |
DROP SCHEMA CASCADE | Supprime le schéma et les objets qui en dépendent. | DROP SCHEMA ecommerce CASCADE; | Danger |
VACUUM FULL | Peut monopoliser la table pendant sa réécriture et doit être planifié avec attention sur une base utilisée. | VACUUM FULL users; | Danger |
pg_terminate_backend | Interrompt une session PostgreSQL et annule sa transaction non validée. | SELECT pg_terminate_backend(12345); | Danger |
