484 Stimmen

Alternatives Ausgabeformat für psql mit einer Spalte pro Zeile und Spaltenname

Ich verwende PostgreSQL 8.4 auf Ubuntu. Ich habe eine Tabelle mit Spalten c1 über cN . Die Spalten sind so breit, dass die Auswahl aller Spalten dazu führt, dass eine Zeile der Abfrageergebnisse mehrfach umbrochen wird. Folglich ist die Ausgabe schwer zu lesen.

Wenn die Abfrageergebnisse nur wenige Zeilen umfassen, wäre es praktisch, wenn ich die Abfrageergebnisse so anzeigen könnte, dass jede Spalte jeder Zeile in einer eigenen Zeile steht, z. B.

 c1: <value of row 1's c1>
 c2: <value of row 1's c1>
 ...
 cN: <value of row 1's cN>
 ---- some kind of delimiter ----
 c1: <value of row 2's c1>
 etc.

Ich führe diese Abfragen auf einem Server aus, auf dem ich keine zusätzliche Software installieren möchte. Gibt es eine psql-Einstellung, mit der ich so etwas tun kann?

804voto

user100464 Punkte 15599

Ich musste einfach mehr Zeit damit verbringen, die Dokumentation zu studieren. Dieser Befehl:

\x on

wird genau das tun, was ich wollte. Hier ist ein Beispiel für die Ausgabe:

select * from dda where u_id=24 and dda_is_deleted='f';
-[ RECORD 1 ]------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
dda_id             | 1121
u_id               | 24
ab_id              | 10304
dda_type           | CHECKING
dda_status         | PENDING_VERIFICATION
dda_is_deleted     | f
dda_verify_op_id   | 44938
version            | 2
created            | 2012-03-06 21:37:50.585845
modified           | 2012-03-06 21:37:50.593425
c_id               | 
dda_nickname       | 
dda_account_name   | 
cu_id              | 1
abd_id             |

371voto

notapatch Punkte 5608

(Neu) Erweiterter Auto-Modus: \x Auto

Neu für Postgresql 9.2; PSQL passt die Datensätze automatisch an die Breite des Bildschirms an. Bisher konnte man nur den erweiterten Modus ein- oder ausschalten und musste je nach Bedarf zwischen den Modi wechseln.

  • Wenn der Datensatz auf die Breite des Bildschirms passt, verwendet psql die normale Formatierung.
  • Wenn der Datensatz no in die Breite des Bildschirms passen; psql verwendet den erweiterten Modus.

Um dies zu erhalten, verwenden Sie: \x Auto

Postgresql 9.5 Dokumentation zum Befehl PSQL.


Breiter Bildschirm, normale Formatierung:

 id | time  |       humanize_time             | value 
----+-------+---------------------------------+-------
  1 | 09:30 |  Early Morning - (9.30 am)      |   570
  2 | 11:30 |  Late Morning - (11.30 am)      |   690
  3 | 13:30 |  Early Afternoon - (1.30pm)     |   810
  4 | 15:30 |  Late Afternoon - (3.30 pm)     |   930
(4 rows)

Schmaler Bildschirm, erweiterte Formatierung:

-[ RECORD 1 ]-+---------------------------
id            | 1
time          | 09:30
humanize_time | Early Morning - (9.30 am)
value         | 570
-[ RECORD 2 ]-+---------------------------
id            | 2
time          | 11:30
humanize_time | Late Morning - (11.30 am)
value         | 690
-[ RECORD 3 ]-+---------------------------
id            | 3
time          | 13:30
humanize_time | Early Afternoon - (1.30pm)
value         | 810
-[ RECORD 4 ]-+---------------------------
id            | 4
time          | 15:30
humanize_time | Late Afternoon - (3.30 pm)
value         | 930

So starten Sie psql mit \x Auto?

Konfigurieren Sie \x auto Befehl beim Start durch Hinzufügen zu .psqlrc in Ihrem Home-Ordner und einen Neustart von psql. Weitere Informationen finden Sie im Abschnitt "Dateien" in der psql-Dokumentation. .

~/.psqlrc

\x auto

96voto

Bryce Punkte 7795

Sie haben so viele Auswahlmöglichkeiten, wie könnten Sie da verwirrt sein :-)? Die wichtigsten Bedienelemente sind:

# \pset format
# \H
# \x
# \pset pager off

Jede hat Optionen und Interaktionen mit den anderen. Die meisten automatischen Optionen sind:

# \x off;\pset format wrapped
# \x auto

Das neuere " \x Die Option "auto" schaltet nur "bei Bedarf" auf zeilenweise Anzeige um.

-[ RECORD 1 ]---------------
id          | 6
description | This is a gallery of oilve oil brands.
authority   | I love olive oil, and wanted to create a place for
reviews and comments on various types.
-[ RECORD 2 ]---------------
id          | 19
description | XXX Test A 
authority   | Testing

Die älteren " \pset format wrapped" ist insofern ähnlich, als es versucht, die Daten sauber auf den Bildschirm zu bringen, aber auf unaligned zurückfällt, wenn die Kopfzeilen nicht passen. Hier ist ein Beispiel für wrapped:

 id |          description           |            authority            
----+--------------------------------+---------------------------------
  6 | This is a gallery of oilve     | I love olive oil, and wanted to
    ; oil brands.                    ;  create a place for reviews and
    ;                                ;  comments on various types.
 19 | Test Test A                    | Testing

34voto

Dineshkumar Punkte 4057

Eine interessante Sache ist, dass wir die Tabellen horizontal anzeigen können, ohne sie zu falten. wir können PAGER Umgebungsvariable. psql macht davon Gebrauch. Sie können

export PAGER='/usr/bin/less -S'

oder einfach less -S wenn es bereits in der Kommandozeile verfügbar ist, wenn nicht, mit dem richtigen Ort. -S zum Anzeigen ungefalteter Zeilen. Sie können einen beliebigen benutzerdefinierten Viewer oder andere Optionen mitgeben.

Ich habe mehr geschrieben in Psql Horizontale Anzeige

29voto

Tombart Punkte 27954

pspg ist ein einfaches Tool, das erweiterte Tabellenformatierung, horizontales Scrollen, Suche und viele weitere Funktionen bietet.

git clone https://github.com/okbob/pspg.git
cd pspg
./configure
make
make install

dann stellen Sie sicher, dass Sie die PAGER Variable z.B. in Ihrem ~/.bashrc

export PAGER="pspg -s 6" 

wobei -s steht für Farbschema ( 1-14 ). Wenn Sie mit pgdg-Repositorien einfach ein Paket installieren (bei Debian-ähnlichen Distributionen):

sudo apt install pspg

pspg example

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X