Blog » Bazy danych

Nowoczesny klient konsolowy pgcli – ułatwianie pracy z PostgreSQL cz. II

pgcli ulatwianie pracy z postgresql

W tym artykule przybliżymy ciekawą alternatywę dla psql, która w znaczący sposób może usprawnić pracę z bazą danych. Pgcli jest interfejsem terminalowym do bazy danych nastawionym na ułatwienie interakcji ze środowiskiem tekstowym i o większych możliwościach niż standardowe narzędzie.

Na wstępie warto zadać sobie pytanie – „czego mi brakuje w psql”? Moim zdaniem jest to bardzo kompletne narzędzie, które pozwala na swobodną konfigurację (można o tym przeczytać w serii „Tips & Tricks – Poradnik psql” cz. I, cz. II oraz cz. III). Niemniej, wyobrażam sobie sytuacje, w których interfejs standardowo dostarczany przez twórców silnika PostgreSQL, nie jest wystarczający. Jednym z przykładów jest interaktywne tworzenie zapytania, gdzie możliwości pgcli mogą przyćmić psql.

Zgodnie z preferencjami twórcy tego projektu, o czym możemy przeczytać na stronie FAQ, jest on: (...) wielkim fanem CLI. W szczególności REPL.(...). I faktycznie pgcli jest narzędziem, które stara się maksymalnie uprościć pracę w pętli – read-eval-print, czyli wczytaj-ewaluuj-wydrukuj.

Instalacja

Proces instalacji przy korzystaniu z repozytoriów PostgreSQL Global Development Group jest bardzo prosty. W przypadku EuroLinuxa, który jest jednym z systemów z rodziny Enterprise Linux, instalacja sprowadza się do następującego polecenia:

yum install -y pgcli

Teraz można już połączyć się przykładowo z lokalnie działającą bazą, na przykład przez wykorzystanie najprostszego mechanizmu autoryzacji tak jak w poniższym przykładzie:

sudo -u postgres pgcli -U postgres

Możliwości pgcli

Zgodnie z tym, co można przeczytać już w samym opisie, pgcli to interfejs do PostgreSQL z autouzupełnianiem oraz kolorowaniem składni. Ponadto podczas edytowania możemy skorzystać z dwóch stylów wprowadzania tekstu znanych z powłoki Bash – tak jak w Emacsie lub zgodnie ze sposobem edycji w Vi (o edycji tekstu w konsoli pisaliśmy tutaj). Dodatkowo szczególnie powtarzalne zapytania możemy zapisać w postaci tzw. kwerend nazwanych (ang. named queries). W przypadku prac administracyjnych to udogodnienie może stanowić ciekawą alternatywę dla wywoływania zapisanych w plikach zapytań.

Autouzupełnianie

pgcli wyróżnia się wykorzystaniem tzw. inteligentnego uzupełniania. Oznacza to, że lista podpowiedzi nie składa się jedynie z listy słów kluczowych akurat pasujących do wpisywanego tekstu, a zostaje ona zawężona tylko do tych podpowiedzi, które pasują do danego kontekstu. Dla przykładu po wpisaniu początku zapytania:

SELECT * FROM

uzupełnienie może wywnioskować, że tylko nazwy tabel lub innych obiektów zachowujących się jak one, jest w tym miejscu możliwe do wykorzystania. W praktyce wygląda to następująco:

pgcli complete

Wygląd i konfiguracja

Podobnie jak w przypadku psql, możemy dostosować zachętkę (ang. prompt) poleceń do własnych preferencji zgodnie z plikiem konfiguracyjnym (o którym można poczytać w dokumentacji prompt). Wiele ze znanych z psql komend jest dostępnych również w tej aplikacji. Pełną listę można wyświetlić przez wywołanie \?.

pgcli komendy

Warto zauważyć, że przy pomocy komendy \pager, możemy ustawić dowolną aplikację zawijającą tekst, w tym, prezentowany w poprzednim artykule z tej serii, pspg.

pgcli pspg

Wszelkie zamiany w konfiguracji wykonujemy w pliku ~/.config/pgcli/config. Zapoznanie się z jego treścią jest najprostszym sposobem na poznanie możliwości pgcli. Tutaj można też zdefiniować schemat kolorów zgodnie z własnymi preferencjami. Ponadto można znaleźć opcje odpowiadające m.in. za format wyświetlanych liczb, wartości NULL, wielkość znaków uzupełnianych słów kluczowych itd.

Podsumowanie

Jak widać, mnogość dostępnych narzędzi pozwala na ożywienie zwykle czarno-białego środowiska konsolowego. Dodatkowe możliwości w znaczący sposób mogą ułatwić i może nawet uprzyjemnić pracę. Na koniec dziękuję za poświęcony czas i zachęcam do subskrypcji naszego newslettera.

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *