# PostgreSQL: psql od podstaw - komendy, ktore powinien znac kazdy administrator

Konsola psql ma dziesiatki przydatnych meta-komend, o ktorych wielu administratorow PostgreSQL nigdy sie nie dowiaduje. Ten tekst zbiera te naprawde uzyteczne w jednym miejscu.

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 pobrania   Cheatsheet](https://jsystems.pl/nowy_blog/download/postgresql/cheatsheety/070_Korzystanie_z_PSQL_cheatsheet.pdf) | [Ikona notatek   Cheatsheet edytowalny](https://jsystems.pl/nowy_blog/download/postgresql/cheatsheety/070_Korzystanie_z_PSQL_cheatsheet.docx) | [Ikona ćwiczenia   Ćwiczenie](https://jsystems.pl/nowy_blog/download/postgresql/cwiczenia/070_Korzystanie_z_PSQL_cwiczenie.pdf) | [Ikona wskazówki   Rozwiązanie ćwiczenia](https://www.youtube.com/watch?v=GmAcxpeuQt4) |

  

**Z tego artykułu dowiesz się:**

- jak z pomocą PSQL połączyć się do wybranego hosta, na wybranym porcie, do wybranej bazy jako wybrany użytkownik,- jak przełączać się pomiędzy bazami danych,- jak wyświetlać pomoc dla poleceń,- jak sprawdzać jakie mamy tabele, do kogo należą, jakiej są wielkości,- jak sprawdzać strukturę tabel - kolumny, ich typy, własności, a także założone klucze główne i obce,- jak sprawdzać jakie mamy indeksy i na jakich tabelach leżą,- jak sprawdzać jakie mamy bazy danych, do kogo należą, jakiej są wielkości, gdzie się znajdują i kto ma do nich dostęp,- jak sprawdzać jakie mamy przestrzenie tabel, do kogo należą, jakiej są wielkości, gdzie się znajdują i kto ma do nich dostęp,- jak uruchamiać zapytania z poziomu PSQL,- jak uruchamiać skrypty za pomocą PSQL,- jak przekazywać zapytanie do PSQL z poziomu basha,- jak sprawdzać informacje o połączeniu,- jak generować skrypty na podstawie SQL i jak je wykonywać,- jak zmieniać orientację wierszy,- jak ograniczać liczbę wierszy.

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
```

![psql w PostgreSQL: ilustracja poglądowa](https://jsystems.pl/nowy_blog/img/postgresql_adm/70/10.png)

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
```

![psql w PostgreSQL: ilustracja poglądowa (2)](https://jsystems.pl/nowy_blog/img/postgresql_adm/70/20.png)

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

```
\dt+
```

![psql w PostgreSQL: ilustracja poglądowa (3)](https://jsystems.pl/nowy_blog/img/postgresql_adm/70/30.png)

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

```
\d postgres_log
```

![psql w PostgreSQL: ilustracja poglądowa (4)](https://jsystems.pl/nowy_blog/img/postgresql_adm/70/40.png)

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

```
\di
```

![psql w PostgreSQL: ilustracja poglądowa (5)](https://jsystems.pl/nowy_blog/img/postgresql_adm/70/50.png)

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

```
\l
```

![psql w PostgreSQL: ilustracja poglądowa (6)](https://jsystems.pl/nowy_blog/img/postgresql_adm/70/60.png)

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

```
\db
```

![psql w PostgreSQL: ilustracja poglądowa (7)](https://jsystems.pl/nowy_blog/img/postgresql_adm/70/70.png)

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

```
\db+
```

![psql w PostgreSQL: ilustracja poglądowa (8)](https://jsystems.pl/nowy_blog/img/postgresql_adm/70/80.png)

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)](https://jsystems.pl/nowy_blog/img/postgresql_adm/70/90.png)

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
```

![psql w PostgreSQL: ilustracja poglądowa (10)](https://jsystems.pl/nowy_blog/img/postgresql_adm/70/100.png)

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)](https://jsystems.pl/nowy_blog/img/postgresql_adm/70/110.png)

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

```
\gexec
```

![psql w PostgreSQL: ilustracja poglądowa (12)](https://jsystems.pl/nowy_blog/img/postgresql_adm/70/120.png)

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)](https://jsystems.pl/nowy_blog/img/postgresql_adm/70/130.png)

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)](https://jsystems.pl/nowy_blog/img/postgresql_adm/70/140.png)

[![Baner szkolenia Administracja, replikacja i tuning baz danych PostgreSQL w JSystems, terminy gwarantowane](https://jsystems.pl/new_page_resources/images/other/pgadm1.jpg)](https://jsystems.pl/szkolenia-postgresql;administracja_bazami_danych_postgresql_z_elementami_ha__optymalizacji_i_replikacji.szczegoly?utm_source=blog&utm_medium=article&utm_campaign=post254&utm_content=banner)

[Szkolenie Administracja, replikacja i tuning baz danych PostgreSQL →](https://jsystems.pl/szkolenia-postgresql;administracja_bazami_danych_postgresql_z_elementami_ha__optymalizacji_i_replikacji.szczegoly?utm_source=blog&utm_medium=article&utm_campaign=post254&utm_content=link)

To szkolenie może być [dofinansowane dla Ciebie z KFS lub BUR](https://jsystems.pl/dofinansowanie?utm_source=blog&utm_medium=article&utm_campaign=post254&utm_content=dofinansowanie).

★★★★★Średnia ocena naszych szkoleń w Google: **5/5**

## Powiązane artykuły

- ›[Kurs administracji PostgreSQL - wybór preworka](https://jsystems.pl/blog/show_post/kurs_administracji_postgresql_-_wybor_preworka)
- ›[PostgreSQL - Najważniejsze pojęcia](https://jsystems.pl/blog/show_post/postgresql_-_najwazniejsze_pojecia)
- ›[Upgrade klastra PostgreSQL - pg\_upgrade krok po kroku](https://jsystems.pl/blog/show_post/postgresql_-_upgrade_klastra)
- ›[Kurs administracji PostgreSQL](https://jsystems.pl/blog/show_post/bezplatny_kurs_administracji_postgresql)
- ›[PG\_PREWARM - prosty i szybki tuning w PostgreSQL](https://jsystems.pl/blog/show_post/PG_PREWARM_-_prosty_i_szybki_tuning_w_PostgreSQL)
- ›[PostgreSQL - PG\_REPACK : przenoszenie, przebudowa i klastrowanie tabel i indeksów](https://jsystems.pl/blog/show_post/postgresql_-_pg_repack__przenoszenie_przebudowa_i_klastrowanie_tabel_i_indeksow_online)
