SQLite: मैं CSV फ़ाइल के रूप में क्वेरी के परिणाम को कैसे सहेज सकता हूं?


159

मैं SQLite के लिए नया हूँ। क्या कोई तरीका है जिससे मैं किसी क्वेरी के परिणामों को CSV फ़ाइल में निर्यात कर सकता हूं?


शेल से निर्यात, वन-लाइनर: stackoverflow.com/a/21741408/911945
एंटोन तारासेंको

जवाबों:


249

से यहाँ और d5e5 की टिप्पणी:

आपको आउटपुट को सीएसवी-मोड पर स्विच करना होगा और फ़ाइल आउटपुट पर स्विच करना होगा।

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

4
यह फ़ाइल कहाँ सहेजी जा रही है?
रेवलेवेल्स

34
यह मानक आउटपुट पर मुद्रित होता है, यानी आपकी स्क्रीन शायद। किसी फ़ाइल में आउटपुट सहेजने के लिए: sqlite> .output test.csv स्क्रीन पर छपाई के परिणामों को पुनर्स्थापित करने के लिए: sqlite> .output stdout
d5e5

1
पॉइंटर्स जहां मैं यह पता लगा सकता हूं कि डब्ल्यू / नोड लाइब्रेरी में यह कैसे करना है?
कुआनब नोव

2
यदि आप किसी विशिष्ट पथ का उपयोग करना चाहते हैं, तो sqlite> >output C: /User/jdoe/Documents/output.csv का उपयोग करें।
डस्टिन

नमस्ते! इसे मैने किया है। यद्यपि मेरी क्वेरी पूरी तरह से काम की है, फ़ाइल आउटपुट खाली है। क्या किसी को पता है क्यों?
वेलेरिया लोबोस ओस्संदोन

144

अपनी सीएसवी फ़ाइल में कॉलम नाम शामिल करने के लिए आप निम्नलिखित कार्य कर सकते हैं:

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
कॉलम नाम कैसे प्राप्त करें, यह दिखाने के लिए धन्यवाद! इस उत्तर को अधिक होना चाहिए।
स्टेन जेम्स

ध्यान दें कि 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

बोनस: cmdlet और पाइप (|) के साथ पॉवरशेल का उपयोग करना।

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

जहाँ query.sql आपकी SQL क्वेरी वाली फ़ाइल है

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.