it-swarm.com.de

So deaktivieren Sie den Header nur in psql (postgresql)

Ich verwende PostgreSQL 9.1.X.

Ich versuche, ein psql -Skript zu erstellen, um Ergebnisse ohne Kopfzeile, aber mit Fußzeile zu drucken.

http://www.postgresql.org/docs/9.1/static/app-psql.html

Aus dem obigen Dokument

\pset tuples_only

schaltet Kopf- und Fußzeile aus. und

\pset footer off

schaltet nur die Fußzeile aus.

Gibt es in psql eine Möglichkeit, die Kopfzeile auszuschalten und die Fußzeile eingeschaltet zu lassen?

Ich weiß, dass es viele Möglichkeiten gibt, dieses Problem mit Shell/Perl/einem beliebigen Textwerkzeug zu umgehen. Ich frage mich jedoch, warum es eine Konfiguration für die Fußzeile gibt, aber keine für die Kopfzeile.

id <--this line I don't want
---- <-- this line I don't want either
 1  <-- this line, yes
(1 row) <-- yes, I want it!
20
skong

Wenn Sie psql über Shell ausführen, können Sie die Option -t (Druckt nur Tupel) verwenden:

$ psql -t -c "SELECT version();"
 PostgreSQL 9.5.5 on x86_64-pc-linux-gnu, compiled by gcc (Debian 4.9.2-10) 4.9.2, 64-bit

Verwenden Sie innerhalb von psql\t, Um den Druckkopf und die Zeilenanzahl zu deaktivieren.

14
Tombart

Meine Lösung ist nicht ganz auszuschalten, sondern Header zu verwerfen.

Sie können versuchen, tail die Abfrage auszugeben:

\o | tail -n +2

Mit \o können Sie die Ausgabe wie in diesem Fall in eine Datei oder eine Pipe umleiten. Diese Lösung hat auch ihren Fehler: Zumindest in meinem Fall nach der Ausführung von SELECT [...], Ich komme erst zu einer Eingabeaufforderung zurück, wenn ich eine Taste drücke. Die erste Ausgabezeile wird nach einer Eingabeaufforderung angezeigt. Wenn Sie dann die Ausgabe in eine Datei umleiten, sollte dies jedoch kein Problem sein.

Dieses Verhalten kann vermieden werden, wenn Sie die Umgebungsvariable PAGER entsprechend festlegen und immer den Pager psql verwenden:

$ export PAGER='tail -n +3'

$ psql -U postgres -d test
psql (9.1.4, server 9.1.5)

test=# \pset pager always
Pager is always used.

test=# select * from a;
  2 | b
  3 | b
(2 rows)

In der mit PostgreSQL 9.2 gelieferten Version psql können Sie \setenv Befehl zur Vereinfachung (ich meine, Sie müssen keine env-Variable festlegen, die sich auch auf andere Anwendungen auswirken kann).

8
dezso

Sie müssen eine psql-Befehlszeilenoption hinzufügen -P "footer=off". Diese Option behält die Spaltentitel im Ergebnis.

5
Karen Muñoz