PSQL to podstawy client PostgreSQL. Jest to aplikacja konsolowa instalowana razem z binariami PostgreSQL. Znajduje się tam, gdzie wszystkie inne binaria odpowiednio dla Ubuntu i wersji 15 PostgreSQL:
/usr/lib/postgresql/15/bin/psql
dla CentOS i PostgreSQL w wersji 15 będzie to:
/usr/pgsql-15/bin/psql
PSQL przyjmuje przełączniki, które pozwolą wskazać adres hosta, port, bazę danych i użytkownika. Wywołanie PSQL z parametrami w kolejności:
psql -h localhost -p 5432 -d postgres -U postgres
Przełączyć się między bazami w ramach tego samego hosta możemy za pomocą:
\c
Na przykład tworzymy bazę “example” i się do niej przełączamy:
create database example;
\c example
Aby wyjść z PSQL, wystarczy wprowadzić i zatwierdzić:
\q
Dostępne komendy zobaczymy, wywołując:
\?
Możemy wyjść z pomocy, wciskając “q”. Jeśli chcemy sprawdzić składnię jakiegoś polecenia, wywołujemy:
\h polecenie
Na przykład:
\h create database
Możemy też sprawdzić, jakie tabele są dostępne w tej bazie danych:
\dt+
Możemy sprawdzić, jak jest zbudowana tabela:
\d postgres_log
Możemy też sprawdzić jakie indeksy mamy w bazie danych:
\di
Możemy też sprawdzić jakie mamy bazy danych:
\l
Lub przestrzenie tabel wraz z informacją gdzie się znajdują:
\db
Informację o wielkości przestrzeni tabel też możemy wyświetlić, ale musimy zastosować:
\db+
Za pomocą PSQL możemy też uruchamiać zewnętrzne skrypty. Stworzyłem skrypt “script.sql” w „/tmp/” i umieściłem w nim:
select current_timestamp;
Aby wywołać skrypt, wykorzystujemy przełącznik „-f” jako parametr psql:
psql -f /tmp/script.sql
Skrypty należy też uruchamiać po zalogowaniu do psql:
\i /tmp/script.sql
Wywołując PSQL, możemy podać konkretną komendę do wykonania:
psql -c "select current_timestamp;"
W obu powyższych przypadkach powinniśmy zobaczyć wyświetlony aktualny czas i datę.
Można też zweryfikować informacje o połączeniu:
psql
\conninfo
Bardzo ciekawą opcją jest komenda \gexec. Dzięki niej możemy wydrukować rząd instrukcji które następnie wykonamy. Przedstawię to na przykładzie. Załóżmy, że chcemy dodać jakieś uprawnienie do wybranych tabel użytkownikowi. Najpierw generuje sobie listę komend w oparciu o SQL:
select 'GRANT SELECT ON TABLE '||tablename||' TO EXAMPLE_GUY' from pg_tables where schemaname='public';
To polecenie wydrukuje nam serię grantów:
Teraz możemy użyć \gexec do wywołania tych wydrukowanych komend:
\gexec
Niekiedy potrzebujemy wydrukować jakieś wiersze w psql, ale wyświetlają się one poziomo i to sprawia, że są nieczytelne:
select * from postgres_log limit 1;
W takiej sytuacji dobrze jest znać komendę \x która powoduje wydruk wierszy pionowo:
\x
select * from postgres_log limit 1;
Wynik:
Komentarze (1)
0
0
Ostatnie zadanie brzmi: Wyjdź z psql i wywołaj psql ponownie z uruchomieniem stworzonego skryptu od razu przy starcie. Ja go zrozumiałem, że ma: - wejść do psql - wykonać skrypt - pozostać A w rozwiązaniu jest po prostu z poziomu linii poleceń, wykonacie skryptu i wyjście z psql.