SQLite: ¿Cómo guardo el resultado de una consulta como un archivo CSV?

Respuestas:

249

Desde aquí y el comentario de d5e5:

Tendrá que cambiar la salida al modo csv y cambiar a la salida del archivo.

sqlite> .mode csv
sqlite> .output test.csv
sqlite> select * from tbl1;
sqlite> .output stdout
gdw2
fuente
44
¿Dónde se guarda este archivo?
RayLoveless
34
Se imprime en salida estándar, es decir, su pantalla probablemente. Para guardar la salida en un archivo: sqlite> .output test.csv Para restaurar los resultados de impresión en la pantalla: sqlite> .output stdout
d5e5
1
¿Indicadores sobre dónde puedo encontrar cómo hacer esto en w / the Node library?
kuanb
2
Use sqlite> .output C: /Users/jdoe/Documents/output.csv si desea usar una ruta específica.
Dustin
¡Hola! Hice esto. Aunque mi consulta funcionó perfectamente, la salida del archivo está vacía. ¿Alguien sabe por qué?
Valeria Lobos Ossandón
144

Para incluir nombres de columna en su archivo csv, puede hacer lo siguiente:

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

Para verificar los cambios que ha realizado, puede ejecutar este comando:

sqlite> .show

Salida:

echo: off   
explain: off   
headers: on   
mode: csv   
nullvalue: ""  
output: stdout  
separator: "|"   
stats: off   
width: 22 18 
Sai Bharath
fuente
3
¡Gracias por mostrar cómo obtener los nombres de columna! Esta respuesta debe ser mayor.
Stan James el
Tenga en cuenta que sqlite3 agrega salida al final del archivo sin borrar el contenido anterior.
kupgov el
1
Pero cada .output filename.csvejecución crea o borra el archivo.
kupgov el
25

Buenas respuestas de gdw2 y d5e5. Para hacerlo un poco más simple, aquí están las recomendaciones reunidas en una sola serie de comandos:

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

Además de las respuestas anteriores, también puede usar .oncede manera similar a .output. Esto genera solo la siguiente consulta en el archivo especificado, por lo que no tiene que seguir .output stdout.

Entonces, en el ejemplo anterior

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

Alternativamente, puede hacerlo en una línea (probado en win10)

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

Bonificación: Uso de PowerShell con cmdlet y pipe (|).

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

donde query.sql es un archivo que contiene su consulta SQL

Alexis
fuente