Frage Exportieren von sqlite nach csv mit Shell-Skript


Ich mache ein Shell-Skript, um eine SQLite-Abfrage in eine CSV-Datei zu exportieren, genau so:

 #!/bin/bash
./bin/sqlite3 ./sys/xserve_sqlite.db ".headers on"
./bin/sqlite3 ./sys/xserve_sqlite.db ".mode csv"
./bin/sqlite3 ./sys/xserve_sqlite.db ".output out.csv"
./bin/sqlite3 ./sys/xserve_sqlite.db "select * from eS1100_sensor_results;"
./bin/sqlite3 ./sys/xserve_sqlite.db ".exit"

Beim Ausführen des Skripts erscheint die Ausgabe auf dem Bildschirm, anstatt in "out.csv" gespeichert zu werden. Es funktioniert mit der gleichen Methode mit der Befehlszeile, aber ich weiß nicht, warum das Shell-Skript Daten in die Datei exportieren kann.

Was mache ich falsch?


74
2018-04-25 08:35


Ursprung


Antworten:


sqlite3

Sie haben einen separaten Anruf an sqlite3 für jede Linie; bis zu deiner Zeit select läuft, dein .out out.csv wurde vergessen.

Versuchen:

#!/bin/bash
./bin/sqlite3 ./sys/xserve_sqlite.db <<!
.headers on
.mode csv
.output out.csv
select * from eS1100_sensor_results;
!

stattdessen.

sh / bash-Methoden

Sie können Ihr Skript entweder mit einer Umleitung aufrufen:

$ your_script >out.csv

oder Sie können Folgendes als erste Zeile in Ihr Skript einfügen:

exec >out.csv

Mit der ersten Methode können Sie verschiedene Dateinamen angeben, während die zweite Methode einen bestimmten Dateinamen ausgibt. In beiden Fällen die Linie .output out.csv kann ignoriert werden.


116
2018-04-25 08:54



Anstelle der Punktbefehle könnten Sie sqlite3-Befehlsoptionen verwenden:

sqlite3 -header -csv my_db.db "select * from my_table;" > out.csv

Dies macht es zu einem One-Liner.

Außerdem können Sie eine SQL-Skriptdatei ausführen:

sqlite3 -header -csv my_db.db < my_script.sql > out.csv

Benutzen sqlite3 -help um die Liste der verfügbaren Optionen anzuzeigen.


142
2018-02-12 22:38



Ich habe vor kurzem ein Shell-Skript erstellt, das in der Lage ist, die Tabellen aus einer db-Datei zu übernehmen und in csv-Dateien umzuwandeln.

https://github.com/darrentu/convert-db-to-csv

Fühlen Sie sich frei, mir Fragen zu meinem Skript zu stellen :)


6
2018-02-21 21:56



Obwohl es sich um ein Shell-Skript handelt, denke ich, dass es nur wenigen helfen wird, die nur daran interessiert sind, die Daten aus der sqlite3-Datenbank in eine CSV-Datei zu übertragen.

Ich fand einen sehr bequemen Weg, es mit dem Firefox Browser mit SQLite Manager-Erweiterung zu tun.

Verbinden Sie sich einfach mit Ihrer sqlite-Datenbankdatei in Firefox (SQlite-Manager -> Datenbank verbinden) und dann Tabelle -> Tabelle exportieren. Sie werden mit einigen weiteren Optionen bedient, die Sie einfach anklicken und versuchen können ....

Am Ende erhalten Sie eine CSV-Datei mit der Tabelle, die Sie ausgewählt haben, um exportiert zu werden.


0
2017-08-05 19:12