SQLite: come posso salvare il risultato di una query come file CSV?


Risposte:


249

Da qui e il commento di d5e5:

Dovrai cambiare l'output in modalità CSV e passare all'output del file.

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

4
dove viene salvato questo file?
RayLoveless,

34
Viene stampato sullo standard output, cioè probabilmente lo schermo. Per salvare l'output in un file: sqlite> .output test.csv Per ripristinare i risultati di stampa sullo schermo: sqlite> .output stdout
d5e5

1
Puntatori su dove posso scoprire come farlo nella libreria Node?
kuanb,

2
Utilizzare sqlite> .output C: /Users/jdoe/Documents/output.csv se si desidera utilizzare un percorso specifico.
Dustin,

Ciao! L'ho fatto. Sebbene la mia query abbia funzionato perfettamente, l'output del file è vuoto. Qualcuno sa perché?
Valeria Lobos Ossandón,

144

Per includere i nomi delle colonne nel file CSV è possibile effettuare le seguenti operazioni:

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

Per verificare le modifiche apportate è possibile eseguire questo comando:

sqlite> .show

Produzione:

echo: off   
explain: off   
headers: on   
mode: csv   
nullvalue: ""  
output: stdout  
separator: "|"   
stats: off   
width: 22 18 

3
Grazie per aver mostrato come ottenere i nomi delle colonne! Questa risposta deve essere più alta.
Stan James,

Si noti che sqlite3 aggiunge l'output alla fine del file senza cancellare il contenuto precedente.
kupgov,

1
Ma ogni .output filename.csvesecuzione crea o cancella il file.
kupgov,

25

Buone risposte da gdw2 e d5e5. Per renderlo un po 'più semplice, ecco i consigli riuniti in una singola serie di comandi:

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

23

Oltre alle risposte sopra puoi anche usare .oncein modo simile a .output. Ciò restituisce solo la query successiva al file specificato, in modo da non dover seguire .output stdout.

Quindi nell'esempio sopra

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

1

In alternativa puoi farlo in una riga (testato in win10)

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

Bonus: utilizzo di PowerShell con cmdlet e pipe (|).

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

dove query.sql è un file contenente la tua query SQL

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.