3 Minuten Lesezeit (537 Worte)

Kurz und gut – Episode #17 PostgreSQL: Selbstgemacht - den Prompt in psql anpassen

In PostgreSQL bietet das psql-Tool eine interaktive Umgebung für die Arbeit mit der Datenbank. Der Prompt, der die Eingabeaufforderung darstellt, kann nach den persönlichen Vorlieben angepasst werden. Dieser Artikel führt durch den Prozess, den psql-Prompt nach individuellen Bedürfnissen zu gestalten. 

Der Standard-Prompt von psql

dbserver:/home/postgres [PG16]$ psql pagila 
psql (16.1) 
Type "help" for help. 
pagila=#  

Der Standard-Prompt von psql zeigt:

  1. Den Datenbank-Namen
  2. In welcher Zeile des SQL-Befehls man sich befindet.
  3. Ob man als normaler Benutzer oder als Superuser angemeldet ist.

Der Prompt wird in psql über drei Variablen gesteuert: 

postgres=# \set 
[...] 
PROMPT1 = '%/%R%x%# ' 
PROMPT2 = '%/%R%x%# ' 
PROMPT3 = '>> ' 
[...]  
  • PROMPT1 - die erste Zeile eines Befehls
  • PROMPT2 - die Folgezeilen eines Befehls
  • PROMPT3 - wird bei „SQL COPY FROM STDIN“ angezeigt.

Diese drei Variablen enthalten ihrerseits wieder Variablen, mit denen der Inhalt gesteuert wird. In den Standard-Einstellungen sind dies:

%/ Name der aktuellen Datenbank
%R In Prompt1 "=", in Prompt2 "-"
%xTransaktionsstatus ("!" = Fehler, "*" aktive Transaktion)
%#Anzeige, ob man als Superuser angemeldet ist ("#") oder als normaler Benutzer (">")

Beispiel

postgres=# \set AUTOCOMMIT off 
postgres=# select 
postgres-# 1/0; 
ERROR:  division by zero 
postgres=!# rollback;  

Beim Standard-Prompt ist der Unterschied zwischen der ersten Zeile eines Befehls ("=") und den Folgezeilen ("-") gering. In unseren Schulungen haben wir die Erfahrung gemacht, dass dieser Unterschied insbesondere von PostgreSQL-Anfängern oft nicht wahrgenommen wird und somit für Irritationen bei unseren Seminarteilnehmern sorgt. 

Welche weiteren Variablen gibt es?

Hier eine Auswahl von weiteren Variablen: 

%M Hostname des Datenbank-Servers
%m Kurzname des Datenbank-Servers ("local" bei einer Socket-basierten Verbindung
%nAktueller Benutzername
%lZeilennummer im aktuellen Befehl
%pProzessnummer des zur Session gehörigen Hintergrundprozesses

Die komplette Liste finden Sie hier.

Man kann das Aussehen des Prompts (Farbe, Stil) mit entsprechenden ANSI-Codes anpassen. Ein Beispiel:

postgres=# \set PROMPT1 '%[%033[1m%]%M %n@%/%R%[%033[0m%]%x%# ' 
[local] postgres@postgres=# exit  

Mit dieser Einstellung werden Hostname, Benutzer- und Datenbank-Name und Transaktionsstatus in roter Schrift angezeigt. Farben können dazu führen, dass Teile des Prompts nicht mehr sichtbar sind. Beispielsweise kann der Kollege, der einen weißen Bildschirmhintergrund im Terminalfenster bevorzugt, weiße Schrift nicht lesen. Farbeffekte sollten daher sparsam verwendet werden oder entsprechend abgestimmt werden.

Häufig werden folgende Einstellungen für den psql-Prompt verwendet:

\set PROMPT1 '%m %n@%/%R%x%# ' 
\set PROMPT2 ' %l > ' 
```  

Das Ergebnis sieht dann so aus: 

192.168.56.107 postgres@scott_db=# select count(*) 
 2 > from pg_settings; 
 count 
------- 
   426 
(1 row)  

In der ersten Zeile sieht man Hostnamen, Benutzername@Datenbankname, Transaktionsstatus und VerbindungstypDie zweite Zeile ist nun eindeutig als Folgezeile des Befehls zu erkennen. 

Automatisches Setzen des Promptes via .psqlrc

Wenn man die obigen SET-Befehle in die .psqlrc-Datei im Home-Verzeichnis des Benutzers einträgt, dann wird der Prompt automatisch gesetzt. 

Fazit

Über eine Änderung des Promptes kann man dem Prompt mehr Informationen entlocken und sich die Arbeit mit psql einfacher machen sowie Fehler vermeiden.

Weitere Informationen zu PostgreSQL bekommen Sie in unserem Seminar „PostgreSQL-Administration“.

Seminarempfehlung

Markus Flechtner hat noch keine Informationen über sich angegeben
 

Kommentare

Derzeit gibt es keine Kommentare. Schreibe den ersten Kommentar!
Sonntag, 28. April 2024

Sicherheitscode (Captcha)

×
Informiert bleiben!

Bei Updates im Blog, informieren wir per E-Mail.

Weitere Artikel in der Kategorie