Onnan indulunk, hogy van egy vagy több Postgres dev-környezetünk.

Használhatjuk a konténerbeli psql klienst, és az mindig kéznél van egy dockeres dev-környezetnél. Ám ha gyakran használjuk, jobban járhatunk a lokális telepítéssel, amely gyorsabban elindul, mint egy konténerbeli.

Az alábbi postgresql csomagban nincs szerver:

# zypper in postgresql

A legegyszerűbb esetben a jelszót interaktívan írjuk be. De létrehozhatunk egy ~/.pgpass fájlt is, amelyben tárolhatjuk a jelszavakat ilyen formátumú sorokban: host:port:database:user:password. Majd így lépünk be:

$ psql -hlocalhost -p5678 -Uroot mydb
$ # vagy így:
$ psql "user=root host=localhost port=5678 dbname=mydb"
$ # vagy így:
$ psql "postgres://root@localhost:5678/mydb"

A jelszót átadhatjuk változóban is, de nem ez a javasolt módszer:

$ PGPASSWORD=password psql -hlocalhost -p5678 -Uroot mydb

Ha egy projektmappában van .env-ünk, abban definiálhatunk egy változót, amely a kapcsolati URL-t tartalmazza, és azt is használhatjuk:

$ . .env
$ psql $DB_URL

A shell parancsait illetően lásd a Postgres-dokumentációt. Külön megemlítjük a psql ~/.psqlrc startup fájlját, amelynek tartalma1 lehet2 például:

\set QUIET on

-- the file name that will be used to store the history list
\set HISTFILE ~/.local/share/psql/psql_hist- :HOST - :DBNAME
-- the max number of commands to store in the command history (default 500)
\set HISTSIZE 2000
-- if set to ignoredups, lines matching the previous history line are not entered (default none)
\set HISTCONTROL ignoredups
-- determines which letter case to use when completing an SQL keyword
\set COMP_KEYWORD_CASE upper
-- PROMPT1 is the normal prompt that is issued when psql requests a new command
\set PROMPT1 '%n@%[%033[1;37m%]%/@%M%[%033[0m%]:psql%x%R%[%033[1;33m%]%#%[%033[0m%] '
-- PROMPT2 is issued when more input is expected during command entry
\set PROMPT2 '%n@%/@%M:psql%x%R%[%033[1;33m%]%#%[%033[0m%] '
-- turns displaying of how long each SQL statement takes on
\timing on
-- sets the client character set encoding
\encoding unicode
-- sets the border line drawing style to one of ascii, old-ascii, or unicode (default ascii)
\pset linestyle unicode
-- sets the string to be printed in place of a null value
\pset null '[NULL]'

\set QUIET off

Ez user@db@host:psql=# formájú promptot állít be, ahol db@host színe fehér, # színe pedig sárga (PROMPT1 a normál, PROMPT2 a folytatódó prompt).

Ha psql-ben kérdezünk le táblákat, szükségünk lesz lapozóra. A more az alapértelmezett lapozó, amellyel nem lehet felfelé görgetni, sokkal jobb a less helyette. Ehhez állítsuk be az alábbi környezeti változókat az általános shellünk konfigjában (fish esetén ~/.config/fish/config.fish):

set -x PAGER less
set -x LESS '-iMSx4R'

  1. JR: Postgresql (psql) .psqlrc tips and tricks. if-not-true-then-false.com, 2009-11-02. ↩︎

  2. Lubaczewski, Hubert (depesz): A tale of making company-wide standard psqlrc. depesz.com, 2021-06-23. ↩︎