Exportar do sqlite para o csv usando o shell script

Eu estou fazendo um script de shell para exportar uma consulta sqlite para um arquivo csv, assim:

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

Ao executar o script, a saída aparece na canvas, em vez de ser salva em “out.csv”. Ele está trabalhando fazendo o mesmo método com a linha de comando, mas não sei porque o shell script falha ao exportar dados para o arquivo.

O que estou fazendo de errado?

sqlite3

Você tem uma chamada separada para sqlite3 para cada linha; quando seu select executado, seu .out out.csv foi esquecido.

Experimentar:

 #!/bin/bash ./bin/sqlite3 ./sys/xserve_sqlite.db < 

em vez de.

methods sh / bash

Você pode chamar seu script com um redirecionamento:

 $ your_script >out.csv 

ou você pode inserir o seguinte como uma primeira linha no seu script:

 exec >out.csv 

O primeiro método permite que você especifique nomes de arquivos diferentes, enquanto o segundo produz um nome de arquivo específico. Em ambos os casos, a linha .output out.csv pode ser ignorada.

Em vez dos comandos dot, você poderia usar as opções de comando sqlite3:

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

Isso faz com que seja um one-liner.

Além disso, você pode executar um arquivo de script sql:

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

Use sqlite3 -help para ver a lista de opções disponíveis.

Eu criei recentemente um script de shell que será capaz de tirar as tabelas de um arquivo db e convertê-los em arquivos csv.

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

Sinta-se à vontade para me fazer perguntas sobre o meu roteiro 🙂

Embora a questão seja sobre shell script, acho que ajudará poucos daqueles que estão apenas preocupados em transferir os dados do database sqlite3 para um arquivo csv.

Eu encontrei uma maneira muito conveniente de fazer isso com o navegador Firefox usando a extensão SQLite Manager.

Simplesmente conecte-se ao seu arquivo de database sqlite no firefox (SQlite manager -> connect database) e depois em Table -> Export table. Você será servido com mais algumas opções que você pode simplesmente clicar e tentar ….

No final, você obtém um arquivo csv com a tabela que escolheu para ser exportado.