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


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

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 

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

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;

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

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.