Zum Inhalt springen

Ausgabeformate

Der Punktbefehl .mode ändert das Erscheinungsbild der Tabellen in der Terminalausgabe. Neben der optischen Anpassung haben diese Modi weitere Vorteile. Das ist nützlich, um DuckDB-Ausgabe weiterzuverwenden, indem die Terminal-Ausgabe in eine Datei umgeleitet wird. Der Modus insert erzeugt eine Reihe von SQL-Anweisungen, mit denen die Daten später eingefügt werden können. Der Modus markdown eignet sich besonders für Dokumentation, der Modus latex für wissenschaftliche Arbeiten.

Warnung Unicode-Behandlung im Windows Terminal

Bei langen Ergebnissen im Windows Terminal wird standardmäßig das Systemprogramm more zum Scrollen durch die Ergebnisse verwendet. Dieses Programm unterstützt Unicode nur unvollständig; je nach Ausgabedaten können Unicode-Zeichen verstümmelt dargestellt werden.

Wir empfehlen stattdessen das Drittanbieterprogramm less, das standardmäßig mit der Installation von Git for Windows mitgeliefert wird. Es lässt sich folgendermaßen aktivieren:

.pager '"C:\Program Files\Git\usr\bin\less.exe" -R'

Liste der Ausgabeformate

Modus Beschreibung
ascii Spalten/Zeilen durch 0x1F und 0x1E getrennt
box Tabellen mit Unicode-Rahmenzeichen
csv Kommagetrennte Werte
column Ausgabe in Spalten (siehe .width)
duckbox Tabellen mit umfangreichen Funktionen (Standard)
html HTML-<table>-Code
insert ⟨TABLE⟩{:.language-sql .highlight} SQL-INSERT-Anweisungen für ⟨TABLE⟩{:.language-sql .highlight}
json Ergebnisse als JSON-Array
jsonlines Ergebnisse als NDJSON
latex LaTeX-tabular-Umgebungscode
line Ein Wert pro Zeile
list Werte durch `
markdown Markdown-Tabellenformat
quote Antworten wie für SQL escapen
table ASCII-Art-Tabelle
tabs Tabulatorgetrennte Werte
tcl TCL-Listenelemente
trash Keine Ausgabe

Ausgabemodus ändern

Mit dem bloßen Punktbefehl .mode fragen Sie das aktuell verwendete Erscheinungsbild ab.

.mode
current output mode: duckbox

Mit dem Punktbefehl .mode und einem Argument setzen Sie das Ausgabeformat.

.mode markdown
SELECT 'quacking intensifies' AS incoming_ducks;
| incoming_ducks |
|----------------------|
| quacking intensifies |

Das Erscheinungsbild der Ausgabe lässt sich auch mit dem Befehl .separator anpassen. Bei einem Exportmodus, der auf einem Trennzeichen basiert (z. B. csv oder tabs), wird das Trennzeichen zurückgesetzt, wenn der Modus geändert wird. Zum Beispiel setzt .mode csv das Trennzeichen auf ein Komma (,). Mit .separator "|" wird die Ausgabe anschließend pipe-getrennt.

.mode csv
SELECT 1 AS col_1, 2 AS col_2
UNION ALL
SELECT 10 AS col1, 20 AS col_2;
col_1,col_2
1,2
10,20
.separator "|"
SELECT 1 AS col_1, 2 AS col_2
UNION ALL
SELECT 10 AS col1, 20 AS col_2;
col_1|col_2
1|2
10|20

Paging

Die CLI unterstützt Paging für große Ergebnismengen mit dem Befehl .pager. Ist es aktiviert, werden Ergebnisse, die die Terminalgröße überschreiten, in einem Pager (z. B. less) angezeigt, um die Navigation zu erleichtern.

Der Pager hat drei Modi:

  • automatic (Standard) – Der Pager wird ausgelöst, wenn das Ergebnis die Zeilen- oder Spaltenschwelle überschreitet.
  • on – Der Pager wird immer für die Ausgabe verwendet.
  • off – Der Pager ist deaktiviert.
.pager on
.pager off
.pager automatic

Im automatischen Modus lassen sich die Schwellenwerte für das Auslösen des Pagers konfigurieren:

.pager set_row_threshold 50
.pager set_column_threshold 5

Ein eigener Pager-Befehl lässt sich als Argument übergeben:

.pager less -RS

Der Standard-Pager-Befehl lässt sich auch über die Umgebungsvariablen DUCKDB_PAGER oder PAGER konfigurieren.

Modus duckbox

Standardmäßig stellt DuckDB Abfrageergebnisse im Modus duckbox dar, einem funktionsreichen ASCII-Art-Ausgabeformat.

Der duckbox-Modus unterstützt die Option large_number_rendering für eine gut lesbare Darstellung großer Zahlen. Sie hat drei Stufen:

  • off – Alle Zahlen werden mit der normalen Formatierung ausgegeben.
  • footer (Standard) – Große Zahlen werden um die menschenlesbare Form ergänzt. Gilt nur für einzeilige Ergebnisse.
  • all - Alle großen Zahlen werden durch die menschenlesbare Form ersetzt.

Siehe die folgenden Beispiele:

.large_number_rendering off
SELECT pi() * 1_000_000_000 AS x;
┌───────────────────┐
│ x │
│ double │
├───────────────────┤
│ 3141592653.589793 │
└───────────────────┘
.large_number_rendering footer
SELECT pi() * 1_000_000_000 AS x;
┌───────────────────┐
│ x │
│ double │
├───────────────────┤
│ 3141592653.589793 │
│ (3.14 billion) │
└───────────────────┘
.large_number_rendering all
SELECT pi() * 1_000_000_000 AS x;
┌──────────────┐
│ x │
│ double │
├──────────────┤
│ 3.14 billion │
└──────────────┘