SQLite: Bagaimana cara menyimpan hasil kueri sebagai file CSV?


Jawaban:


249

Dari sini dan komentar d5e5:

Anda harus mengalihkan output ke mode csv dan beralih ke output file.

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

4
dimana file ini disimpan?
Ray Tanpa Cinta

34
Ini dicetak ke output standar, yaitu layar Anda mungkin. Untuk menyimpan hasil dalam file: sqlite> .output test.csv Untuk mengembalikan hasil pencetakan ke layar: sqlite> .output stdout
d5e5

1
Pointer di mana saya bisa mengetahui bagaimana melakukan ini di w / perpustakaan Node?
kuanb

2
Gunakan sqlite> .output C: /Users/jdoe/Documents/output.csv jika Anda ingin menggunakan jalur tertentu.
Dustin

Hai! Saya melakukan ini. Meskipun kueri saya berfungsi dengan baik, output file kosong. Apakah ada yang tahu kenapa?
Valeria Lobos Ossando

144

Untuk memasukkan nama kolom ke file csv Anda, Anda dapat melakukan hal berikut:

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

Untuk memverifikasi perubahan yang telah Anda buat, Anda dapat menjalankan perintah ini:

sqlite> .show

Keluaran:

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

3
Terima kasih telah menunjukkan cara mendapatkan nama kolom! Jawaban ini harus lebih tinggi.
Stan James

Perhatikan bahwa sqlite3 menambahkan output ke akhir file tanpa menghapus konten sebelumnya.
kupgov

1
Tetapi setiap .output filename.csveksekusi membuat atau menghapus file.
kupgov

25

Jawaban bagus dari gdw2 dan d5e5. Untuk membuatnya sedikit lebih sederhana di sini adalah rekomendasi yang digabungkan dalam satu rangkaian perintah:

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

23

Selain jawaban di atas, Anda juga dapat menggunakan .oncecara yang serupa dengan .output. Ini hanya menampilkan permintaan berikutnya ke file yang ditentukan, sehingga Anda tidak harus mengikuti.output stdout .

Jadi pada contoh di atas

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

1

Atau Anda dapat melakukannya dalam satu baris (diuji pada win10)

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

Bonus: Menggunakan PowerShell dengan cmdlet dan pipa (|).

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

di mana query.sql adalah file yang berisi permintaan SQL Anda

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.