postgresql et psqlrc

30
psql et .psqlrc Meetup - Le bon coin Anthony Nowocien 12 mars 2015

Upload: anthony-nowocien

Post on 16-Jul-2015

280 views

Category:

Software


3 download

TRANSCRIPT

psql et .psqlrcMeetup - Le bon coin

Anthony Nowocien

12 mars 2015

Sommaire

1 psqlIntroLa première foisQuelques commandes

2 .psqlrc

3 Liens

psqlIntro

Intro...• Client• Universel• Scriptable• Puissant

• Différent !

psqlIntro

Intro...• Client• Universel• Scriptable• Puissant

• Différent !

psqlIntro

Utilisation

psqlIntro

Utilisation

psqlLa première fois

psqlLa première fois

Help ! \h et \ ?

Commandes

Quelques commandes psql :• \timing• \x• \ ! \cd• \e

psql

Temps d’exécution \timing

psqlAffichage étendu \x

psqlAffichage étendu \x

psql

Commande shell \ ! et \cd

psqlEditeur \e

psqlEditeur \e

psql

Plus d’infos sur vos objets

\d[S+] Infos\ddp default access privileges\dew[+] Foreign Data Wrappers\dF[+] Recherche full-text\dn[S+] Schémas\du Users\dx[+] Extensions installées... ...

psql

Oui mais comment• personnaliser mon environnement ?• éviter d’écrire (tout le temps) les mêmes requêtes ?• ...

Sommaire

1 psql

2 .psqlrcAffichageRequêtes fréquentesDivers

3 Liens

.psqlrc

Intro• configuration système ou user (voir la commandepg_config --sysconfdir)

• .psqlrc sous Unix, %APPDATA%\postgresql\psqlrc.confpour Windows

.psqlrc pour personnaliser :• l’affichage : prompt, bordures,«NULL», ...• définir ses propres variables : raccourcis, requêtesfréquentes

• divers : historique, autocommit, comportement surerreur...

.psqlrcL’invite avec PROMPT1, PROMPT2 et PROMPT3

%M : server%m : host name%> : port%n : user%/ : current database%~ : like \%/ but ~ for default database%# : ’#’ if superuser, ’>’ otherwise%R

.psqlrcL’invite avec PROMPT1, PROMPT2 et PROMPT3

%M : server%m : host name%> : port%n : user%/ : current database%~ : like \%/ but ~ for default database%# : ’#’ if superuser, ’>’ otherwise%R

.psqlrcLes bordures avec linestyle et border

.psqlrc

L’affichage de NULL :

.psqlrc

Définir ses propres variables :

Si la variable est un identifiant (ou instruction SQL), il est plussûr de l’écrire ainsi :

.psqlrc

Définir ses propres variables :

Si la variable est un identifiant (ou instruction SQL), il est plussûr de l’écrire ainsi :

.psqlrc

Requêtes fréquentes :

-- Custom variables and shortcuts\set eav ’EXPLAIN ANALYZE VERBOSE’

-- Custom queries-- server uptime\set uptime ’select date_trunc(\’second\’,current_timestamp - pg_postmaster_start_time()) as uptime;’-- table size\set table-size ’select nspname || \’.\’ || relname AS \"relation\", pg_size_pretty(pg_relation_size(C.oid)) AS "size" from pg_class C left join pg_namespace N on (N.oid = C.relnamespace) where nspname not in (\’pg_catalog\’, \’information_schema\’) order by pg_relation_size(C.oid) desc limit 20;’-- database size\set database-size ’SELECT d.datname AS Name, pg_catalog.pg_get_userbyid(d.datdba) AS Owner, CASE WHEN pg_catalog.has_database_privilege(d.datname, \’CONNECT\’) THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname)) ELSE \’No Access\’ END AS Size FROM pg_catalog.pg_database d ORDER BY CASE WHEN pg_catalog.has_database_privilege(d.datname, \’CONNECT\’) THEN pg_catalog.pg_database_size(d.datname) ELSE NULL END DESC LIMIT 20;’-- buffer cache hit ratio\set buffer-cache-hit-ratio ’select datname, blks_hit::float/(blks_hit+blks_read) as hit_ratio from pg_stat_database where blks_read+blks_hit <> 0;’

.psqlrcDivers : historique

---------------------------------------------- HISTFILE-- File used to store history list-- Values:--\set HISTFILE ~/.psql_history- :DBNAME---------------------------------------------- HISTSIZE-- Values: numeric, defaults to 500--\set HISTSIZE 500---------------------------------------------- HISTCONTROL-- Values: ignorespace,ignoredups,ignoreboth\set HISTCONTROL ignoreboth

Sommaire

1 psql

2 .psqlrc

3 Liens

En savoir plus

Pour les curieux :• http://www.postgresql.org/docs/9.4/static/app-psql.html• http://www.craigkerstiens.com/2013/02/21/more-out-of-psql/• https://github.com/e7e6/psqlrc

Questions ?