Blog JSystems - uwalniamy wiedzę!

Szukaj

W skróciePsql to podstawowy, konsolowy klient PostgreSQL, instalowany razem z binariami serwera. Łączysz się nim do bazy, podając host, port, nazwę bazy i użytkownika, a potem przeglądasz obiekty, uruchamiasz zapytania oraz całe skrypty.

psql, najczęstsze komendy

Podstawowe komendy w psql:

\l            -- lista baz danych
\c nazwa_bazy -- polaczenie z baza
\dt           -- lista tabel
\d tabela     -- opis tabeli
Jak korzystać z najczęściej wykorzystywanego narzędzia administratora - PSQL?




Ikona pliku PDF do pobraniaCheatsheet Ikona notatekCheatsheet edytowalny Ikona ćwiczeniaĆwiczenie Ikona wskazówkiRozwiązanie ćwiczenia

Z tego artykułu dowiesz się:

Uruchamianie psql i ścieżki do klienta

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

Łączenie z bazą i przełączanie między bazami

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
psql w PostgreSQL: ilustracja poglądowa

Aby wyjść z PSQL, wystarczy wprowadzić i zatwierdzić:

\q

Pomoc i składnia poleceń

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
psql w PostgreSQL: ilustracja poglądowa (2)

Przeglądanie obiektów bazy: tabele, indeksy, bazy, przestrzenie

Możemy też sprawdzić, jakie tabele są dostępne - w tej bazie danych:

\dt+
psql w PostgreSQL: ilustracja poglądowa (3)

Możemy - sprawdzić, jak jest zbudowana tabela:

\d postgres_log
psql w PostgreSQL: ilustracja poglądowa (4)

Możemy też sprawdzić jakie indeksy mamy w bazie danych:

\di
psql w PostgreSQL: ilustracja poglądowa (5)

Możemy też sprawdzić jakie mamy bazy danych:

\l
psql w PostgreSQL: ilustracja poglądowa (6)

Lub przestrzenie tabel wraz z informacją gdzie się znajdują:

\db
psql w PostgreSQL: ilustracja poglądowa (7)

Informację o wielkości przestrzeni tabel też możemy wyświetlić, ale musimy zastosować:

\db+
psql w PostgreSQL: ilustracja poglądowa (8)

Uruchamianie zapytań i skryptów

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
psql w PostgreSQL: ilustracja poglądowa (9)

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ę.

Informacje o połączeniu i zaawansowane wyświetlanie

Można też zweryfikować informacje o połączeniu:

psql
\conninfo
psql w PostgreSQL: ilustracja poglądowa (10)

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:

psql w PostgreSQL: ilustracja poglądowa (11)

Teraz możemy użyć \gexec do wywołania tych wydrukowanych komend:

\gexec
psql w PostgreSQL: ilustracja poglądowa (12)

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;
psql w PostgreSQL: ilustracja poglądowa (13)

W takiej sytuacji dobrze jest znać komendę \x która powoduje wydruk wierszy pionowo:

\x
select * from postgres_log limit 1;

Wynik:

psql w PostgreSQL: ilustracja poglądowa (14)

Warto przeczytać dalej

Masz konkretny problem z PostgreSQL? Zajrzyj do naszej bazy: 112 najczęstszych pytań i problemów z PostgreSQL - z rozwiązaniami krok po kroku.
<-- Poprzednia: Zmiana portu nasłuchu PostgreSQL - parametr port (postgresql.conf) Następna: Konfiguracja parametrów PostgreSQL - postgresql.conf, ALTER SYSTEM, SET -->

Najczęściej zadawane pytania

Czym jest psql?
Psql to podstawowy klient PostgreSQL, aplikacja konsolowa instalowana razem z binariami bazy. Służy administratorowi do łączenia się z bazą, przeglądania tabel, indeksów i przestrzeni tabel oraz do uruchamiania zapytań i skryptów.
Jak połączyć się psql z konkretną bazą na wybranym hoście?
Podajesz przełączniki wskazujące host, port, bazę i użytkownika, na przykład psql z opcjami host, port, nazwa bazy i nazwa użytkownika. Po zalogowaniu bazę zmienisz w locie komendą przełączenia połączenia do wybranej bazy na tym samym hoście.
Jak w psql sprawdzić tabele, indeksy i bazy danych?
Listę tabel pokazuje komenda z d i t, opis pojedynczej tabeli komenda z d i nazwą tabeli, listę indeksów komenda z d i i, a listę baz danych komenda z l. Wersje z plusem dodają informacje o wielkości obiektów.
Jak uruchamiać skrypty i pojedyncze zapytania z psql?
Zewnętrzny skrypt uruchomisz z linii poleceń przełącznikiem f ze ścieżką do pliku, a po zalogowaniu komendą z i i ścieżką. Pojedyncze zapytanie wykonasz przełącznikiem c z treścią zapytania w cudzysłowie.
Do czego służy komenda gexec w psql?
Komenda gexec pozwala najpierw wygenerować zapytaniem listę poleceń, na przykład serię nadań uprawnień na podstawie danych z bazy, a następnie wykonać te wydrukowane polecenia. To wygodny sposób na hurtowe generowanie i uruchamianie instrukcji.

Komentarze (1)

Musisz być zalogowany by móc dodać komentarz. Zaloguj się przez Google
jupit.jacek.k 08-10-2024 13:07:31

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.