it-swarm.com.de

Alternatives Ausgabeformat für psql

Ich benutze PostgreSQL 8.4 unter Ubuntu. Ich habe eine Tabelle mit Spalten c1 bis cN. Die Spalten sind so breit, dass bei Auswahl aller Spalten eine Reihe von Abfrageergebnissen mehrmals umgebrochen wird. Folglich ist die Ausgabe schwer zu lesen.

Wenn die Abfrageergebnisse nur wenige Zeilen umfassen, wäre es zweckmäßig, wenn ich die Abfrageergebnisse so anzeigen könnte, dass sich jede Spalte jeder Zeile in einer separaten Zeile befindet, z.

 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 machen kann?

273
user100464

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

\x on

werde genau das machen 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             | 
468
user100464

(Neu) Erweiterter Auto-Modus:\x auto

Neu für Postgresql 9.2; PSQL passt Datensätze automatisch an die Breite des Bildschirms an. Bisher hatten Sie nur den erweiterten Modus ein- oder ausgeschaltet und mussten bei Bedarf zwischen den Modi wechseln.

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

Um dies zu bekommen, benutze: \x auto

Postgresql 9.5-Dokumentation zum PSQL-Befehl.


Breitbild, 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

Wie starte ich psql mit\x auto?

Konfigurieren Sie \x auto Befehl beim Start durch Hinzufügen zu .psqlrc in deinem Home-Ordner und starte psql neu. Weitere Informationen finden Sie im Abschnitt 'Dateien' im psql-Dokument .

~/.psqlrc

\x auto
238
not a patch

Sie haben so viele Möglichkeiten, wie könnten Sie verwirrt sein :-)? Die Hauptkontrollen sind:

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

Jeder hat Optionen und Interaktionen mit den anderen. Die automatischsten Optionen sind:

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

Die neuere Option "\ x auto" wechselt "nur bei Bedarf" zur zeilenweisen Anzeige.

-[ 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

Das ältere "\ pset format wrapped" ist insofern ähnlich, als es versucht, die Daten sauber auf den Bildschirm zu bringen, aber auf "unausgerichtet" zurückgreift, wenn die Header nicht passen. Hier ist ein Beispiel für verpackt:

 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
60
Bryce

Eine interessante Sache ist, dass wir die Tische horizontal betrachten können, ohne sie zu falten. Wir können die Umgebungsvariable PAGER verwenden. psql macht davon Gebrauch. Sie können einstellen

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

oder nur less -S wenn es bereits in der Kommandozeile verfügbar ist, wenn nicht mit dem richtigen Ort. -S, um ungefaltete Linien anzuzeigen. Sie können jeden benutzerdefinierten Viewer oder andere Optionen damit übergeben.

Ich habe mehr in Psql Horizontal Display geschrieben

13
Dineshkumar

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

stellen Sie dann sicher, dass Sie die PAGER -Variable aktualisieren, z. in deinem ~/.bashrc

export PAGER="pspg -s 6" 

wo -s steht für Farbschema (1-14). Wenn Sie pgdg-Repositorys verwenden , installieren Sie einfach ein Paket (auf einer Debian-ähnlichen Distribution):

Sudo apt install pspg

pspg example

10
Tombart

Achten Sie auch darauf, dass Sie\H auschecken, wodurch die HTML-Ausgabe ein- und ausgeschaltet wird. Nicht unbedingt einfach an der Konsole zu lesen, aber interessant für das Ablegen in eine Datei (siehe\o) oder das Einfügen in ein Editor-/Browserfenster zum Anzeigen, insbesondere bei mehreren Zeilen mit relativ komplexen Daten.

7
Wexxor

sie können Zenity verwenden, um die Abfrage als HTML-Tabelle anzuzeigen.

  • implementieren Sie zuerst das Bash-Skript mit folgendem Code:

    cat> '/tmp/sql.op'; zenity --text-info --html --filename = '/ tmp/sql.op';

    speichere es wie mypager.sh

  • Exportieren Sie dann die Umgebungsvariable PAGER, indem Sie den vollständigen Pfad des Skripts als Wert festlegen.

    zum Beispiel: - exportiere PAGER = '/ path/mypager.sh'

  • Melden Sie sich dann beim psql-Programm an und führen Sie den Befehl \ H aus

  • Wenn Sie eine Abfrage ausführen, wird die Ausgabe in der Tabelle im HTML-Format angezeigt.