PostgreSQL psql: enkele tips en handigheidjes

PostgreSQL psql: enkele tips en handigheidjes

PSQL is binnen PostgreSQL de standaard tool om beheer en sql statements uit te voeren.  Zoals vaak is de standaard tools zoiets als een acquired taste. De tool werkt prima maar er is enig doorzettingsvermogen nodig om effectief met de tool om te gaan.
Dit wordt ondersteund door de hoeveelheid aan commando switches die je bij de help optie vindt:

-bash-4.2$ psql --help
psql is the PostgreSQL interactive terminal.

Usage:
  psql [OPTION]... [DBNAME [USERNAME]]

General options:
  -c, --command=COMMAND    run only single command (SQL or internal) and exit
  -d, --dbname=DBNAME      database name to connect to (default: "postgres")
  -f, --file=FILENAME      execute commands from file, then exit
  -l, --list               list available databases, then exit
  -v, --set=, --variable=NAME=VALUE
                           set psql variable NAME to VALUE
                           (e.g., -v ON_ERROR_STOP=1)
  -V, --version            output version information, then exit

…
…

Connection options:
  -h, --host=HOSTNAME      database server host or socket directory (default: "local socket")
  -p, --port=PORT          database server port (default: "5432")
  -U, --username=USERNAME  database user name (default: "postgres")
  -w, --no-password        never prompt for password
  -W, --password           force password prompt (should happen automatically)

En als je eenmaal verbonden bent, geeft het \? een bijna oneindige reeks commando’s.
Daarom geven wij jou in dit artikel gratis tien eenvoudige tips en handigheidjes met psql.

1. \conninfo
Dit geeft informatie over de huidige connectie: als wie en hoe ben je ingelogd:

postgres=# \conninfo
You are connected to database "postgres" as user "postgres" on host "localhost" (address "::1") at port "5432".

2. \watch [SEC]
Dit commando voert een statement elke SEC seconden opnieuw uit.
Dat is handig als je bijvoorbeeld de vooruitgang van een bepaalde actie wilt monitoren.

postgres=# select now();
 now
-------------------------------
 2021-04-13 15:13:41.197539+02
(1 row)

postgres=# \watch 30
Tue 13 Apr 2021 03:13:43 PM CEST (every 30s)

              now
-------------------------------
 2021-04-13 15:13:43.327079+02
(1 row)

3. \w FILE
Hiermee schrijf je het SQL statement in de buffer naar file weg.
Dat is handig al sje interactief je sql statement aan het ontwikkelen bent en dit later opnieuw wilt gebruiken.

postgres=# select count (*) from athletes;

 count
-------
 43725
(1 row)

postgres=# \w ath.sql;
postgres=# exit

-bash-4.2$ ls

ath.sql

4. \timing on
Dit geeft de executie tijd van een statement weer in miliseconden.
de postgres=# \timing on

Timing is on.
postgres=# select count (*) from athletes;
 count
-------
43725
(1 row)

Time: 40.915 ms

5. De -command of -c switch om een statement uit te voeren via de commandline.

-bash-4.2$ psql  -c 'select count(*)  from athletes;'
count
-------
43725
(1 row)

6. De -f  flag om een script uit te voeren, zodat bijvoorbeeld een statement zoals gesaved in punt 3 eenvoudig uitgevoerd kan worden.

-bash-4.2$ psql -f ath.sql
 count
-------
 43725
(1 row)

7. De -H of –html flag om de output in hetml formaat te krijgen

-bash-4.2$ psql -H -c 'select count(*)  from athletes;'
<table border="1">
  <tr>
    <th align="center">count</th>
  </tr>
  <tr valign="top">
    <td align="right">43725</td>
  </tr>
</table>
<p>(1 row)<br /></p>
-bash-4.2$

8. De -csv flag om resultaat als een Comma seperated formaat te krijgen.

-bash-4.2$ psql  --csv  -c 'select gender, count(*) from athletes group by gender;'
gender,count
M,27000
W,16725
-bash-4.2$

9. De -t of –tuples-only  vlag zorgt er voor dat in de output alleen de data terug gegeven wordt zonder eventuele headers en feedback informatie.

-bash-4.2$ psql  -t -c 'select gender, count(*) from athletes group by gender;'
 M      | 27000
 W      | 16725

-bash-4.2$

10. de -L of –log-file optie zorgen er voor dat de output van de query naar een file geredirect wordt.
-bash-4.2$ psql -L ath.txt  -f ath.sql

********* QUERY **********
select count (*) from athletes;
**************************

 count
-------
 43725
(1 row)

Naast de bovenstaande tien features zijn er er nog vele andere mogelijkheden om psql efficient te gebruiken en zo maximaal plezier van een PostgreSQL database te hebben.
Hopelijk heb je wat gehad aan dit artikel over PostgreSQL psql: enkele tips en handigheidjes. Mocht je hulp nodig hebben of je hebt vragen n.a.v. dit artikel, laat het ons dan weten.

https://nl.wikipedia.org/wiki/PostgreSQL

Scroll to Top