PostgreSQL, fornisce un file di avvio (.psqlrc) che viene eseguito prima della connessione al database quando si utilizza con l'utilità psql. Usando il file .psqlrc puoi inserire tutte le tue query importanti con un alias di parole con il comando "set" ed eseguirlo nel terminale psql invece di digitare grandi query. Se non vedrai il file .psqlrc nella home directory dell'utente "postgres", puoi crearlo esplicitamente. L'ho provato e l'ho trovato molto utile.
Punti su .psqlrc:- .psqlrc è un file di avvio, viene eseguito durante la connessione al cluster.
- Il file .psqlrc risiederà nella home directory dell'utente 'postgres'.
- Opzioni psql -X o -c, non leggere il file .psqlrc.
- Il file .psqlrc è a livello di sessione completo e non a livello di database.
Schermata del mio terminale:
Vediamo come implementarlo.
Sintassi:
set <alias-variable-name> 'query'Nota:se la tua query contiene virgolette singole o doppie, utilizza " o " nella query. Query di esempio da inserire nel file .psqlrc con alias:
vi ~/.psqlrc
set PAGER OFF
set waits 'SELECT pg_stat_activity.procpid, pg_stat_activity.current_query, pg_stat_activity.waiting, now() - pg_stat_activity.query_start as "totaltime", pg_stat_activity.backend_start FROM pg_stat_activity WHERE pg_stat_activity.current_query !~ '%IDLE%'::text AND pg_stat_activity.waiting = true;;'
set locks 'select pid,mode,current_query from pg_locks,pg_stat_activity where granted=false and locktype='transactionid' and pid=procpid order by pid,granted;;'
:wq!
Utilizzo:
postgres=# :waits
procpid | current_query | waiting | totaltime | backend_start
---------+-------------------------------+---------+-----------------+----------------------------------
9223 | insert into locks VALUES (1); | t | 00:00:18.901773 | 2011-10-08 00:29:10.065186+05:30
(1 row)
postgres=# :locks
pid | mode | current_query
------+-----------+-------------------------------
9223 | ShareLock | insert into locks VALUES (1);
(1 row)
Non è stato utile? Divertiti… :). Tornerò con altre cose.