SQLite: Como salvar o resultado de uma consulta como um arquivo CSV?


Respostas:


248

A partir daqui e o comentário de d5e5:

Você precisará alternar a saída para o modo csv e alternar para a saída do arquivo.

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

4
onde esse arquivo está sendo salvo?
RayLoveless #

34
É impresso na saída padrão, ou seja, sua tela provavelmente. Para salvar a saída em um arquivo: sqlite> .output test.csv Para restaurar a impressão de resultados para a tela: sqlite> .output stdout
d5e5

1
Ponteiros sobre onde posso descobrir como fazer isso na biblioteca do Nó?
kuanb

2
Use sqlite> .output C: /Users/jdoe/Documents/output.csv se desejar usar um caminho específico.
Dustin

Oi! Eu fiz isso. Embora minha consulta tenha funcionado perfeitamente, a saída do arquivo está vazia. Alguém sabe o porquê?
Valeria Lobos Ossandón 22/10

144

Para incluir nomes de colunas no seu arquivo CSV, você pode fazer o seguinte:

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

Para verificar as alterações que você fez, você pode executar este comando:

sqlite> .show

Resultado:

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

3
Obrigado por mostrar como obter os nomes das colunas! Essa resposta precisa ser maior.
Stan James

Observe que o sqlite3 anexa a saída ao final do arquivo sem apagar o conteúdo anterior.
kupgov

1
Mas cada .output filename.csvexecução cria ou apaga o arquivo.
kupgov

25

Boas respostas de gdw2 e d5e5. Para simplificar um pouco, aqui estão as recomendações reunidas em uma única série de comandos:

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

23

Além das respostas acima, você também pode usar de .oncemaneira semelhante à .output. Isso gera apenas a próxima consulta para o arquivo especificado, para que você não precise segui-lo .output stdout.

Então, no exemplo acima

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

1

Como alternativa, você pode fazer isso em uma linha (testada no win10)

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

Bônus: usando o PowerShell com cmdlet e pipe (|).

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

em que query.sql é um arquivo que contém sua consulta SQL

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.