Il s'agit de configurer correctement psql pour être plus productif. Pour cela, on stockera dans ~/.psqlrc la configuration de base qui sera chargée à chaque lancement de psql.
Voici mon fichier de configuration ~/.psqlrc que j'utilise tous les jours:
\set QUIET ON \set PROMPT1 '%n@%M %~%R%# ' \set PAGER OFF \set HISTFILE ~/.psql_history- :HOST - :DBNAME \set HISTSIZE 2000 \set ECHO_HIDDEN ON \set COMP_KEYWORD_CASE upper \timing on \encoding unicode \pset null 'NULL' \pset border 1 \set QUIET OFF \echo 'Predefined queries:\n' \echo '\t\t\t:settings\t-- Server Settings' \echo '\t\t\t:dbsize\t\t-- Database Size' \echo '\t\t\t:tablesize\t-- Tables Size' \echo '\t\t\t:uptime\t\t-- Server uptime' \set settings 'select name, setting,unit,context from pg_settings;' \set dbsize 'SELECT datname, pg_size_pretty(pg_database_size(datname)) db_size FROM pg_database ORDER BY db_size;' \set tablesize '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 40;' \set uptime 'select now() - pg_postmaster_start_time() AS uptime;'
Faites \? sous psql pour voir quel est le sens de chaque instruction. A noter le moyen bien pratique pour enregistrer des requêtes prédéfinies dans des variables.
Sous windows, ce fichier n'est pas dans %HOME%\.psqlrc mais à %APPDATA%\postgresql\psqlrc.conf On peut aussi indiquer explicitement où se trouve le fichier .psqlrc en mettant son chemin complet dans la variable d'environnement PSQLRC.
Une autre configuration intéressante est l'instruction \x qui permet d'indiquer vouloir afficher les lignes de données en colonne plutôt qu'en ligne : pratique quand on est en présence de lignes assez longues.