SQLite: Làm cách nào để lưu kết quả của truy vấn dưới dạng tệp CSV?


Câu trả lời:


248

Từ đây và nhận xét của d5e5:

Bạn sẽ phải chuyển đầu ra sang chế độ csv và chuyển sang đầu ra tệp.

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

4
tập tin này được lưu ở đâu?
RayLovless

34
Nó được in ra đầu ra tiêu chuẩn, có lẽ là màn hình của bạn. Để lưu đầu ra trong một tệp: sqlite> .output test.csv Để khôi phục kết quả in ra màn hình: sqlite> .output stdout
d5e5

1
Con trỏ về nơi tôi có thể tìm hiểu làm thế nào để làm điều này trong thư viện Node?
kuanb

2
Sử dụng sqlite> .output C: /Users/jdoe/Document/output.csv nếu bạn muốn sử dụng một đường dẫn cụ thể.
Dustin

Chào! Tôi đã làm điều này. Mặc dù truy vấn của tôi hoạt động hoàn hảo, đầu ra tệp trống. Có ai biết tại sao không?
Valeria lobos Ossandón

144

Để bao gồm tên cột vào tệp csv của bạn, bạn có thể làm như sau:

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

Để xác minh những thay đổi mà bạn đã thực hiện, bạn có thể chạy lệnh này:

sqlite> .show

Đầu ra:

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

3
Cảm ơn đã chỉ ra làm thế nào để có được tên cột! Câu trả lời này cần phải cao hơn.
Stan James

Lưu ý rằng sqlite3 nối đầu ra vào cuối tệp mà không xóa nội dung trước đó.
kupgov

1
Nhưng mỗi lần .output filename.csvthực hiện sẽ tạo hoặc xóa tệp.
kupgov

25

Câu trả lời tốt từ gdw2 và d5e5. Để làm cho nó đơn giản hơn một chút ở đây là các khuyến nghị được tập hợp lại trong một chuỗi các lệnh:

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

23

Ngoài các câu trả lời trên, bạn cũng có thể sử dụng .oncetheo cách tương tự .output. Điều này chỉ đưa ra truy vấn tiếp theo cho tệp được chỉ định, do đó bạn không phải tuân theo .output stdout.

Vì vậy, trong ví dụ trên

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

1

Ngoài ra, bạn có thể làm điều đó trong một dòng (được thử nghiệm trong win10)

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

Phần thưởng: Sử dụng powershell với cmdlet và pipe (|).

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

trong đó query.sql là một tệp chứa truy vấn SQL của bạn

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.