Pregunta Exportar de sqlite a csv usando script de shell


Estoy haciendo un script de shell para exportar una consulta sqlite a un archivo csv, así:

 #!/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"

Al ejecutar el script, la salida aparece en la pantalla, en lugar de guardarse en "out.csv". Está trabajando haciendo el mismo método con la línea de comandos, pero no sé por qué el script de shell no puede exportar datos al archivo.

¿Qué estoy haciendo mal?


74
2018-04-25 08:35


origen


Respuestas:


sqlite3

Tienes una llamada separada para sqlite3 para cada línea; cuando tu select corre, tu .out out.csv ha sido olvidado.

Tratar:

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

en lugar.

métodos sh / bash

Puede llamar a su script con una redirección:

$ your_script >out.csv

o puede insertar lo siguiente como primera línea en su script:

exec >out.csv

El primer método le permite especificar diferentes nombres de archivo, mientras que el segundo se envía a un nombre de archivo específico. En ambos casos, la línea .output out.csv puede ser ignorado


116
2018-04-25 08:54



En lugar de los comandos dot, puede usar las opciones de comando sqlite3:

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

Esto lo convierte en un trazador de líneas.

Además, puede ejecutar un archivo de script sql:

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

Utilizar sqlite3 -help para ver la lista de opciones disponibles.


142
2018-02-12 22:38



Recientemente, creé un script de shell que podrá tomar las tablas de un archivo db y convertirlas en archivos csv.

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

No dude en hacerme cualquier pregunta en mi script :)


6
2018-02-21 21:56



Aunque la pregunta es sobre el script de shell, creo que ayudará a algunos de los que simplemente se molestan en transferir los datos de la base de datos sqlite3 a un archivo csv.

Encontré una forma muy conveniente de hacerlo con el navegador Firefox usando la extensión SQLite Manager.

Simplemente conéctese a su archivo de base de datos sqlite en firefox (SQlite manager -> connect database) y luego Table -> Export table. Le servirán algunas opciones más que puede hacer clic y probar ...

Al final, obtienes un archivo csv con la tabla que has elegido para exportar.


0
2017-08-05 19:12