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 tela, ao invés de ser salva em "out.csv". Ele está funcionando do mesmo modo com a linha de comando, mas não sei por que o script de shell não consegue exportar dados para o arquivo.
O que estou fazendo errado?
<<! ... !
é exatamente o que eu precisava. Obrigado.Em vez dos comandos de ponto, você pode usar as opções de comando sqlite3:
sqlite3 -header -csv my_db.db "select * from my_table;" > out.csv
Isso o torna 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.fonte
Recentemente, criei um script de shell que poderá pegar as tabelas de um arquivo db e convertê-las em arquivos csv.
https://github.com/darrentu/convert-db-to-csv
Sinta-se à vontade para me fazer qualquer pergunta sobre o meu script :)
fonte
Embora a questão seja sobre o script de shell, acho que ajudará poucos daqueles que estão apenas se preocupando em transferir os dados do banco de dados 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 ao seu arquivo de banco de dados sqlite no firefox (gerenciador SQlite -> conectar banco de dados) e então Tabela -> Exportar tabela. Você terá mais algumas opções que você pode apenas clicar e experimentar ....
No final você obtém um arquivo csv com a tabela que você escolheu para ser exportada.
fonte
Using command line for Linux: user@dell-Admin: sqlite3 #activate your sqlite database first sqlite> .tables #search for tables if any available if already created one. sqlite> .schema #if you want to check the schema of the table. # once you find your table(s), then just do the following: sqlite> .headers on #export along with headers (column names) sqlite> .mode csv #file type is csv sqlite> .output example.csv #you want to provide file name to export sqlite> SELECT * from events; #If entire table is needed or select only required sqlite> .quit #finally quit the sqlite3
fonte