PostgreSQL zapewnia plik startowy (.psqlrc), który jest uruchamiany przed połączeniem z bazą danych podczas korzystania z narzędzia psql. Używając pliku .psqlrc możesz umieścić wszystkie ważne zapytania z jednym aliasem słowa za pomocą polecenia „set” i wykonać je w terminalu psql zamiast wpisywać duże zapytania. Jeśli nie zobaczysz pliku .psqlrc w katalogu domowym użytkownika „postgres”, możesz go utworzyć jawnie. Wypróbowałem to i okazało się, że jest bardzo pomocne.
Punkty na .psqlrc:- .psqlrc to plik startowy, wykonywany podczas łączenia się z klastrem.
- Plik .psqlrc będzie znajdować się w katalogu domowym użytkownika „postgres”.
- opcje psql -X lub -c, nie czytaj pliku .psqlrc.
- Plik .psqlrc jest przeznaczony dla pełnego poziomu sesji, a nie poziomu bazy danych.
Mój terminal Zrzut ekranu:
Zobaczmy, jak to zaimplementować.
Składnia:
set <alias-variable-name> 'query'Uwaga:jeśli zapytanie zawiera pojedyncze lub podwójne cudzysłowy, użyj w zapytaniu „ lub ”. Przykładowe zapytania do umieszczenia w pliku .psqlrc z aliasem:
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!
Użycie:
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)
Czy to nie było pomocne. Cieszyć się… :). Wrócimy z kilkoma rzeczami.