Module DE
Dalibo SCOP
24.09
29 août 2024
Cette formation est sous licence CC-BY-NC-SA. Vous êtes libre de la redistribuer et/ou modifier aux conditions suivantes :
PostgreSQL® Postgres® et le logo Slonik sont des marques déposées par PostgreSQL Community Association of Canada.
Ce document ne couvre que les versions supportées de PostgreSQL au moment de sa rédaction, soit les versions 12 à 16.
Les outils graphiques et console :
createdb
createuser
dropdb
dropuser
pg_dumpall
pg_dump
pg_restore
pg_basebackup
pg_verifybackup
vacuumdb
clusterdb
reindexdb
initdb
pg_ctl
pg_upgrade
pg_config
pg_controldata
pgbench
Pour se connecter à une base :
Outils habituels, et très souvent :
$ psql -h serveur -d mabase -U nom -p 5432
-h
/tmp
/var/run/postgresql
-p
5432
-U
-d
psql "host=serveur1 user=jeanpierre dbname=comptabilite"
psql -d "host=serveur1 port=5432 user=jeanpierre dbname=comptabilite sslmode=require application_name='chargement' options='-c work_mem=30MB' "
psql -d "postgresql://jeanpierre@serveur1:5432/comptabilite"
psql \ "postgres://jeanpierre@serveur1/comptabilite?sslmode=require\ &options=-c%20synchronous_commit%3Doff"
psql -d postgresql://serveur1/comptabilite?user=jeanpierre\&port=5432
psql "host=serveur1,serveur2,serveur3 port=5432,5433,5434 user=jeanpierre dbname=comptabilite target_session_attrs=read-write load_balance_hosts=random" # v16
psql
-W | --password
-w | --no-password
$PGPASSWORD
.pgpass
chmod 600 .pgpass
nom_hote:port:database:nomutilisateur:motdepasse
postgres$ psql base=#
\?
\h <COMMANDE>
\q
ctrl-D
quit
exit
\password nomutilisateur
\conninfo
SELECT current_user,session_user,system_user;
\c ma base
\c mabase utilisateur serveur 5432
Lister :
\l
\l+
\d
\d+
\dt
\dt+
\di
\di+
\dn
\df[+]
\du[+]
\dp
\ddp
ALTER DEFAULT PRIVILEGES
\drds
\dv
\df
\sv
\sf
\dconfig
SELECT * FROM pg_tables ; SELECT * FROM pg_tables \g SELECT * FROM pg_tables \gx -- une ligne par champ INSERT INTO … VALUES (1) \; INSERT INTO … VALUES (2) ; -- 1 transaction
\g
Ctrl-R
\x
less
set PAGER='less -S'
\setenv PAGER 'pspg'
\gdesc
\gexec
\e
\ev nom_vue
\ef nom_fonction
\s
\i fichier.sql
\o resultat.out
\echo "Texte…"
\timing on
\! ls -l
\cd /tmp
\getenv toto PATH
\set NOMVAR nouvelle_valeur
ON_ERROR_STOP
on
off
ON_ERROR_ROLLBACK
interactive
ROW_COUNT
ERROR
true
SET
\unset NOMVAR
SELECT now() AS maintenant \gset SELECT :'maintenant' ;
\if
\elif
\else
\endif
~/.psqlrc
~/.psqlrc-X.Y
~/.psqlrc-X
-X
.psqlrc
\set ON_ERROR_ROLLBACK interactive -- paramétrage de session \timing on \set PROMPT1 '%M:%> %n@%/%R%#%x' -- invite \set cfg 'SHOW ALL ;' -- requête utilisable avec :cfg \set cls '\\! clear;' -- nettoyer l'écran avec :cls
-c
psql -c 'SELECT * FROM matable' -c 'SELECT fonction(123)' ;
psql -f nom_fichier.sql
psql < nom_fichier.sql
\i nom_fichier.sql
AUTOCOMMIT
BEGIN;
COMMIT;
ROLLBACK;
-1
--single-transaction
\encoding
SET client_encoding
DO $$ DECLARE r record; BEGIN FOR r IN (SELECT schemaname, relname FROM pg_stat_user_tables WHERE coalesce(last_analyze, last_autoanalyze) IS NULL ) LOOP RAISE NOTICE 'Analyze %.%', r.schemaname, r.relname ; EXECUTE 'ANALYZE ' || quote_ident(r.schemaname) || '.' || quote_ident(r.relname) ; END LOOP; END$$;
\set nom_table 'ma_table' SELECT * FROM :"nom_table"; \set valeur_col1 'test' SELECT * FROM :"nom_table" WHERE col1 = :'valeur_col1';
\prompt 'invite' nom_variable \unset variable
psql -v VARIABLE=valeur
-XAt
-t
--tuples-only
-A
--no-align
--no-psqlrc
-F
--field-separator
-R
--record-separator
-H | --html
--csv
\crosstabview [colV [colH [colD [colonnedetriH]]]]
\pset title 'Résultat de la requête
\pset format html
csv
cron
#!/bin/bash # Paramètre : la base t=$(mktemp) # fichier temporaire pg_dump -Fc "$1" > $t # sauvegarde d=$(eval date +%d%m%y-%H%M%S) # date mv $t /backup/"${1}_${d}.dump" # déplacement exit 0
N’hésitez pas, c’est le moment !
https://dali.bo/de_quiz