SQLite: Wie speichere ich das Ergebnis einer Abfrage als CSV-Datei?

158

Ich bin neu in SQLite. Gibt es eine Möglichkeit, die Ergebnisse einer Abfrage in eine CSV-Datei zu exportieren?

RayLoveless
quelle
Export aus Shell, einzeilig
Anton Tarasenko

Antworten:

248

Von hier und dem Kommentar von d5e5:

Sie müssen die Ausgabe in den CSV-Modus und in die Dateiausgabe wechseln.

sqlite> .mode csv
sqlite> .output test.csv
sqlite> select * from tbl1;
sqlite> .output stdout
gdw2
quelle
4
Wo wird diese Datei gespeichert?
RayLoveless
34
Es wird auf Standardausgabe gedruckt, dh wahrscheinlich auf Ihrem Bildschirm. So speichern Sie die Ausgabe in einer Datei: sqlite> .output test.csv So stellen Sie die Druckergebnisse auf dem Bildschirm wieder her: sqlite> .output stdout
d5e5
1
Hinweise, wo ich in der Knotenbibliothek herausfinden kann, wie das geht?
Kuanb
2
Verwenden Sie sqlite> .output C: /Users/jdoe/Documents/output.csv, wenn Sie einen bestimmten Pfad verwenden möchten.
Dustin
Hallo! Ich war das. Obwohl meine Abfrage einwandfrei funktioniert hat, ist die Dateiausgabe leer. Weiß jemand warum?
Valeria Lobos Ossandón
144

Um Spaltennamen in Ihre CSV-Datei aufzunehmen, haben Sie folgende Möglichkeiten:

sqlite> .headers on
sqlite> .mode csv
sqlite> .output test.csv
sqlite> select * from tbl1;
sqlite> .output stdout

Um die vorgenommenen Änderungen zu überprüfen, können Sie diesen Befehl ausführen:

sqlite> .show

Ausgabe:

echo: off   
explain: off   
headers: on   
mode: csv   
nullvalue: ""  
output: stdout  
separator: "|"   
stats: off   
width: 22 18 
Sai Bharath
quelle
3
Vielen Dank, dass Sie gezeigt haben, wie Sie die Spaltennamen erhalten! Diese Antwort muss höher sein.
Stan James
Beachten Sie, dass sqlite3 die Ausgabe an das Ende der Datei anfügt, ohne dass zuvor Inhalte gelöscht wurden.
Kupgov
1
Bei jeder .output filename.csvAusführung wird die Datei erstellt oder gelöscht.
Kupgov
25

Gute Antworten von gdw2 und d5e5. Zur Vereinfachung werden hier die Empfehlungen in einer einzigen Befehlsreihe zusammengefasst:

sqlite> .mode csv
sqlite> .output test.csv
sqlite> select * from tbl1;
sqlite> .output stdout
Crsierra
quelle
23

Zusätzlich zu den obigen Antworten können Sie auch .onceauf ähnliche Weise wie verwenden .output. Dies gibt nur die nächste Abfrage an die angegebene Datei aus, sodass Sie nicht folgen müssen .output stdout.

Also im obigen Beispiel

.mode csv
.headers on
.once test.csv
select * from tbl1;
Matte
quelle
1

Alternativ können Sie dies in einer Zeile tun (getestet in win10).

sqlite3 -help
sqlite3 -header -csv db.sqlite 'select * from tbl1;' > test.csv

Bonus: PowerShell mit Cmdlet und Pipe verwenden (|).

get-content query.sql | sqlite3 -header -csv db.sqlite > test.csv

Dabei ist query.sql eine Datei, die Ihre SQL-Abfrage enthält

Alexis
quelle