SQLite
 sql >> Datenbank >  >> RDS >> SQLite

Formatieren Sie SQLite-Abfrageergebnisse als Spalten mit Spaltenüberschriften

Wenn Sie sich mit der SQLite-Befehlszeilen-Shell verbinden und eine Abfrage ausführen, wird das Ergebnis standardmäßig als durch Pipes getrennte Liste zurückgegeben.

Sie haben vielleicht bemerkt, dass die Ergebnisse keine Spaltennamen enthalten, was Ihre Ergebnisse verwirrend machen kann, wenn Sie versuchen, sie zu lesen, insbesondere wenn die Abfrage viele Spalten zurückgibt.

Glücklicherweise gibt es eine einfache Möglichkeit, die Ausgabe so zu formatieren, dass sie als Spalte mit Spaltenüberschriften angezeigt wird.

Die Standardausgabe

Als Beispiel sehen Sie hier, wie die SQLite-Befehlszeilenschnittstelle Abfrageergebnisse standardmäßig ausgibt:

SELECT * FROM Products;

Ergebnis:

1|Widget Holder|139.5
2|Widget Opener|89.7
3|Widgets - 6 Pack|374.2
4|Blue Widget|63.0

Es gibt also keine Spaltenüberschriften und es wird als durch Pipes getrennte Liste angezeigt.

Spaltenüberschriften hinzufügen

Um die Spaltennamen zu jeder Spalte hinzuzufügen, verwenden Sie .headers on .

.headers on
SELECT * FROM Products;

Ergebnis:

ProductId|ProductName|Price
1|Widget Holder|139.5
2|Widget Opener|89.7
3|Widgets - 6 Pack|374.2
4|Blue Widget|63.0

Sie können Header deaktivieren, indem Sie .headers off verwenden .

Ergebnisse als Spalte formatieren

Sie können auch .mode column verwenden um die Ergebnisse als Spalte zu formatieren.

.mode column
SELECT * FROM Products;

Ergebnis:

ProductId   ProductName    Price     
----------  -------------  ----------
1           Widget Holder  139.5     
2           Widget Opener  89.7      
3           Widgets - 6 P  374.2     
4           Blue Widget    63.0      

Wenn Sie es auf das Standardformat zurücksetzen müssen, können Sie .mode list verwenden .

Spaltenbreite ändern

Möglicherweise stellen Sie fest, dass im vorherigen Beispiel einer der Produktnamen abgeschnitten wurde. Dies liegt daran, dass es breiter als die Breite der Spalte ist.

Standardmäßig ist jede Spalte zwischen 1 und 10 Zeichen breit, abhängig vom Namen der Spaltenüberschrift und der Breite der ersten Datenspalte. Daten, die zu breit sind, um in eine Spalte zu passen, werden abgeschnitten.

Sie können jedoch die .width verwenden dot-Befehl, um die Spalten auf eine bestimmte Breite zu setzen.

So können wir das vorherige Beispiel korrigieren, sodass das dritte Produkt nicht abgeschnitten wird.

.width 0 16 0
SELECT * FROM Products;

Ergebnis:

ProductId   ProductName       Price     
----------  ----------------  ----------
1           Widget Holder     139.5     
2           Widget Opener     89.7      
3           Widgets - 6 Pack  374.2     
4           Blue Widget       63.0      

Sie fragen sich vielleicht, warum ich die erste und dritte Spalte auf Null gesetzt habe?

Verwenden eines Werts von 0 macht die Säule tatsächlich selbstjustierend (bis zu einem bestimmten Punkt). Angabe von 0 setzt die Spalte auf die größere von drei Zahlen; 10, die Breite des Headers und die Breite der ersten Datenzeile.

In meinem Fall funktioniert dies gut für die erste und dritte Spalte, aber nicht für die zweite Spalte. Daher setze ich diese Spalte auf 16 (wie viele Zeichen das dritte Produkt verwendet).

Auf Standard zurücksetzen

Wenn Sie die Ausgabe kurz zurücksetzen müssen, um den SQLite-Standard zu verwenden (d. h. eine durch Pipes getrennte Liste ohne Spaltenüberschriften), können Sie einfach ein neues Terminalfenster öffnen und Ihre Befehle von dort aus ausführen. SQLite verwendet in diesem Fall seine Standardeinstellungen.

Oder wenn Sie das aktuelle Terminalfenster auf die Standardeinstellungen zurücksetzen möchten, können Sie einfach Folgendes verwenden:

.headers off
.mode list
.separator "|"

In diesem Fall habe ich den .separator hinzugefügt Punktbefehl, nur für den Fall, dass Sie zuvor das Trennzeichen geändert haben.

Falls Sie sich fragen, ja, Sie können .separator ", " verwenden um die Ergebnisse als kommaseparierte Liste auszugeben.

Behalten Sie die Spalteneinstellungen bei

Wie bereits erwähnt, werden Abfragen jedes Mal, wenn Sie ein neues Terminalfenster öffnen, um eine Verbindung zu SQLite herzustellen, auf das Standardformat von SQLite zurückgesetzt (durch Pipes getrennte Liste).

Damit Sie die obigen Befehle nicht jedes Mal erneut eingeben müssen, wenn Sie sich mit SQLite verbinden, können Sie sie in eine .sqliterc eingeben Datei.

Öffnen Sie beispielsweise eine leere Textdatei und geben Sie Folgendes ein:

.mode column
.headers on

Speichern Sie die Datei als .sqliterc in das Home-Verzeichnis des Benutzers, und SQLite verwendet es bei jeder Verbindung.

Zum Beispiel, wenn das Home-Verzeichnis des Benutzers /Users/bart ist , dann würden Sie es in diesem Verzeichnis ablegen, sodass es sich unter /Users/bart/.sqliterc befindet .

Dies ist eine versteckte Datei, daher erhalten Sie je nach System möglicherweise verschiedene Eingabeaufforderungen, die Sie zur Bestätigung usw. auffordern. Stimmen Sie einfach den Eingabeaufforderungen zu, bis es im Home-Verzeichnis des Benutzers gespeichert ist.