शेल स्क्रिप्ट का उपयोग करके साइक्लाइट से सीएसवी तक निर्यात करें


87

मैं इस तरह से एक csv फ़ाइल के लिए एक sqlite क्वेरी निर्यात करने के लिए एक शेल स्क्रिप्ट बना रहा हूं:

 #!/bin/bash
./bin/sqlite3 ./sys/xserve_sqlite.db ".headers on"
./bin/sqlite3 ./sys/xserve_sqlite.db ".mode csv"
./bin/sqlite3 ./sys/xserve_sqlite.db ".output out.csv"
./bin/sqlite3 ./sys/xserve_sqlite.db "select * from eS1100_sensor_results;"
./bin/sqlite3 ./sys/xserve_sqlite.db ".exit"

स्क्रिप्ट निष्पादित करते समय, आउटपुट "out.csv" पर सहेजे जाने के बजाय स्क्रीन पर दिखाई देता है। यह कमांड लाइन के साथ समान विधि काम कर रहा है, लेकिन मुझे नहीं पता कि शेल स्क्रिप्ट फ़ाइल में डेटा निर्यात करने में विफल क्यों है।

मैं क्या गलत कर रहा हूं?

जवाबों:


125

sqlite3

आपके पास sqlite3प्रत्येक पंक्ति के लिए एक अलग कॉल है ; जब तक आपके selectरन, आपके .out out.csvभूल गए हैं।

प्रयत्न:

#!/bin/bash
./bin/sqlite3 ./sys/xserve_sqlite.db <<!
.headers on
.mode csv
.output out.csv
select * from eS1100_sensor_results;
!

बजाय।

श / बाश के तरीके

आप अपनी स्क्रिप्ट को रीडायरेक्शन के साथ कह सकते हैं:

$ your_script >out.csv

या आप अपनी स्क्रिप्ट में पहली पंक्ति के रूप में निम्नलिखित सम्मिलित कर सकते हैं:

exec >out.csv

पूर्व विधि आपको अलग फ़ाइलनाम निर्दिष्ट करने की अनुमति देती है, जबकि बाद वाला एक विशिष्ट फ़ाइल नाम के लिए आउटपुट करता है। दोनों मामलों में लाइन .output out.csvको नजरअंदाज किया जा सकता है।


महान, धन्यवाद, अब यह काम कर रहा है! (और इसे ">" के बजाय ">" की आवश्यकता है, लेकिन मैं लिनक्स में एक नौसिखिया हूं: डी)
रोरो

1
यदि यहां एक उत्तर वास्तव में आपके प्रश्न का उत्तर देता है , तो आपको उत्तर के कुल वोटों के नीचे चेक मार्क पर क्लिक करना चाहिए (यह आपको हल्का ग्रे दिखाई देना चाहिए)। यह प्रश्न के उत्तर के रूप में चिह्नित करता है।
tzot

देरी के लिए क्षमा करें, मैं एक असली नौसिखिया हूं: डी
रोरो 4'11

<<! ... !वास्तव में मैं क्या जरूरत है। धन्यवाद।
रुस्तिस्लाव ड्रूज़चेन्को

171

डॉट कमांड के बजाय, आप sqlite3 कमांड विकल्प का उपयोग कर सकते हैं:

sqlite3 -header -csv my_db.db "select * from my_table;" > out.csv

यह इसे वन-लाइनर बनाता है।

इसके अलावा, आप एक sql स्क्रिप्ट फ़ाइल चला सकते हैं:

sqlite3 -header -csv my_db.db < my_script.sql > out.csv

sqlite3 -helpउपलब्ध विकल्पों की सूची देखने के लिए उपयोग करें।


2
बहुत, बहुत बेहतर ... यह स्वीकृत समाधान होना चाहिए! KISS :-)
pvandenberk

4
यह समाधान खिड़कियों पर भी काम करेगा, बशर्ते कि sqlite3 आपके पथ पर या उसी निर्देशिका में हो।
एंथेस

7

मैंने हाल ही में एक शेल स्क्रिप्ट बनाई है जो टेबल को डीबी फाइल से ले जा सकेगी और उन्हें सीएसवी फाइलों में बदल सकेगी।

https://github.com/darrentu/convert-db-to-csv

बेझिझक मुझसे मेरी स्क्रिप्ट पर कोई सवाल पूछिए :)


2
इससे मुझे मदद मिली। आपको अपने उत्तर में कोड की 10 पंक्तियों को कॉपी-पेस्ट करना चाहिए, फिर मैंने पहले से जो अपवोट दिया है वह अधिक न्यायसंगत लगेगा।
mxmlnkn

स्क्रिप्ट तालिका के नाम के आसपास उद्धरण याद कर रही है (यदि तालिका का नाम डैश है तो यह एक त्रुटि फेंकता है)
एरिक एफ।

0

हालाँकि यह प्रश्न शेल स्क्रिप्ट के बारे में है, लेकिन मुझे लगता है कि यह उन लोगों में से कुछ को मदद करेगा जो डेटा को sqlite3 डेटाबेस से सीएसवी फ़ाइल में स्थानांतरित करने के बारे में परेशान हैं।

मैंने SQLite प्रबंधक एक्सटेंशन का उपयोग करके फ़ायरफ़ॉक्स ब्राउज़र के साथ इसे करने का एक बहुत ही आश्वस्त तरीका पाया।

बस अपने sqlite डेटाबेस फ़ाइल को फ़ायरफ़ॉक्स (SQlite Manager -> कनेक्ट डेटाबेस) से कनेक्ट करें और फिर टेबल -> एक्सपोर्ट टेबल। आपको कुछ और विकल्पों के साथ परोसा जाएगा जिन्हें आप बस क्लिक करके देख सकते हैं ...।

अंत में आपको निर्यात की जाने वाली तालिका u के साथ एक csv फ़ाइल मिलती है।


0
Using command line for Linux:

user@dell-Admin: sqlite3 #activate your sqlite database first
sqlite> .tables #search for tables if any available if already created one.
sqlite> .schema #if you want to check the schema of the table.

# once you find your table(s), then just do the following:

sqlite> .headers on   #export along with headers (column names)
sqlite> .mode csv     #file type is csv
sqlite> .output example.csv   #you want to provide file name to export
sqlite> SELECT * from events;    #If entire table is needed or select only required
sqlite> .quit    #finally quit the sqlite3

अब example.csv फ़ाइल के लिए अपने सिस्टम में खोजें और आपको यह मिल जाएगा।

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