SQLite: ฉันจะบันทึกผลลัพธ์ของแบบสอบถามเป็นไฟล์ CSV ได้อย่างไร


คำตอบ:


249

จากที่นี่และความคิดเห็นของ d5e5:

คุณจะต้องสลับเอาท์พุทเป็นโหมด csv และเปลี่ยนเป็นเอาท์พุทไฟล์

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

4
ไฟล์นี้ถูกบันทึกไว้ที่ไหน
RayLoveless

34
มันถูกพิมพ์ไปยังเอาท์พุทมาตรฐานเช่นหน้าจอของคุณอาจ หากต้องการบันทึกเอาต์พุตในไฟล์: sqlite> .output test.csv เมื่อต้องการกู้คืนผลการพิมพ์ไปที่หน้าจอ: sqlite> .output stdout
d5e5

1
ตัวชี้เกี่ยวกับที่ฉันสามารถหาวิธีการทำเช่นนี้ในห้องสมุด Node?
kuanb

2
ใช้ sqlite> .output C: /Users/jdoe/Documents/output.csv หากคุณต้องการใช้พา ธ เฉพาะ
Dustin

Hi! ฉันทำอย่างนี้. แม้ว่าเคียวรีของฉันจะทำงานได้อย่างสมบูรณ์เอาต์พุตของไฟล์จะว่างเปล่า มีใครรู้บ้างไหมว่าทำไม
Valeria Lobos Ossandón

144

หากต้องการรวมชื่อคอลัมน์ไว้ในไฟล์ csv ของคุณคุณสามารถทำสิ่งต่อไปนี้:

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

เพื่อตรวจสอบการเปลี่ยนแปลงที่คุณทำคุณสามารถเรียกใช้คำสั่งนี้:

sqlite> .show

เอาท์พุท:

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

3
ขอบคุณที่แสดงวิธีรับชื่อคอลัมน์! คำตอบนี้จะต้องสูงขึ้น
Stan James

โปรดทราบว่า sqlite3 ผนวกเอาท์พุทต่อท้ายไฟล์โดยไม่ต้องลบเนื้อหาก่อนหน้า
kupgov

1
แต่.output filename.csvการประมวลผลแต่ละครั้งจะสร้างหรือลบไฟล์
kupgov

25

คำตอบที่ดีจาก gdw2 และ d5e5 เพื่อให้ง่ายขึ้นเล็กน้อยนี่คือคำแนะนำที่ดึงมารวมกันในชุดคำสั่งเดียว:

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

23

นอกจากนี้ในการตอบข้างต้นคุณยังสามารถใช้ในทางที่คล้ายกับ.once .outputผลลัพธ์นี้เฉพาะแบบสอบถามถัดไปไปยังไฟล์ที่ระบุดังนั้นคุณไม่จำเป็นต้องติดตามด้วย.output stdoutยังแฟ้มที่ระบุเพื่อให้คุณไม่ต้องทำตามด้วย

ดังนั้นในตัวอย่างข้างต้น

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

1

หรือคุณสามารถทำได้ในหนึ่งบรรทัด (ทดสอบใน win10)

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

โบนัส: การใช้ powershell ด้วย cmdlet และ pipe (|)

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

โดย query.sql เป็นไฟล์ที่มีการสืบค้น SQL ของคุณ

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.