SQLite स्क्रिप्ट निष्पादित करें


99

मैं इस आदेश का उपयोग करके sqlite3 संस्करण 3.7.7, unix 11.4.2 शुरू करता हूं:

sqlite3 auction.db

जहां नीलामी .bb पहले ही नहीं बनाई गई है।

sqlite> auction.db < create.sql;

मुझे यह त्रुटि देता है: near "auction": syntax error

मैं स्क्रिप्ट कैसे चला सकता हूं?

जवाबों:


127

ऐसा करने के कई तरीके हैं, एक तरीका यह है:

sqlite3 auction.db

के बाद:

sqlite> .read create.sql

सामान्य तौर पर, SQLite परियोजना में वास्तव में शानदार दस्तावेज हैं! मुझे पता है कि हम अक्सर डॉक्स से पहले Google के लिए पहुंच जाते हैं, लेकिन SQLite के मामले में, डॉक्स वास्तव में तकनीकी लेखन कर रहे हैं। यह साफ, स्पष्ट और संक्षिप्त है।


4
Scritps में उपयोग के लिए, आप चला सकते हैं .readसे सीधे आदेश sqlite3आदेश: sqlite3 autction.db '.read create.sql'
क्राइस लुएंगो

145

आप खुद को SQLite के अंदर से नहीं, शेल से create.sqlमें खिलाना चाहते हैं sqlite3:

$ sqlite3 auction.db < create.sql

SQL के SQLite का संस्करण <फ़ाइलों के लिए समझ में नहीं आता है, आपका शेल करता है।


1
दुर्भाग्य से, सभी गोले <इनपुट पुनर्निर्देशन के रूप में नहीं समझते हैं । (जैसे, पॉवरशेल।)
एलन

@Alan PowerShell में कुछ इनपुट पुनर्निर्देशन तंत्र है, नहीं? और यदि नहीं तो हमेशा बिटॉप्स का दृष्टिकोण भी होता है।
म्यू

@muistooshort बिटॉप्स पर मेरी टिप्पणी देखें। Sqlite डॉट कमांड sql स्टेटमेंट पैरामीटर में काम करती है जिससे आप इनपुट रिडायरेक्शन का सहारा लिए बिना अपनी इच्छित फ़ाइल को खोल सकते हैं।
क्रिस बेक जूल

@ क्रिसबेक वे अलग-अलग समाधान हैं। <SQLite प्रॉम्प्ट से तुरंत बाहर निकल जाएगा और शेल में त्रुटि कोड लौटाएगा। .read file.sqlशीघ्र छोड़ देगा और -init file.sqlहमेशा 0 लौटाएगा, इसलिए <स्क्रिप्टिंग के लिए सबसे अच्छा है। इसके अलावा यह क्रॉस-प्लेटफॉर्म है .readजिसके विपरीत विंडोज पथ का समर्थन नहीं करता है।
TWIStErRob

23

सरल प्रश्नों को निष्पादित करने और अपनी शेल स्क्रिप्ट पर लौटने के लिए, मुझे लगता है कि यह अच्छी तरह से काम करता है:

$ sqlite3 example.db 'SELECT * FROM some_table;'

2
यह प्रभावी रूप से म्यू बहुत छोटा जवाब है।
कर्नल थर्टी दो

11
@ColonelThirtyTwo हाँ, यह म्यू के बहुत करीब है बहुत छोटा जवाब है। जिस कारण से मैंने एक अतिरिक्त उत्तर जोड़ा, वह एक इनलाइन कमांड को जल्दी से निष्पादित करने के लिए एक विधि का प्रदर्शन करने के बजाय, कमांड को स्टोर करने के लिए SQL फ़ाइल बनाने के अतिरिक्त चरण को लेने के बजाय था।
23

5
@ शब्दिका मुझे लगता है कि इनलाइन कमांड निष्पादित करने के लिए अधिक मुहावरेदार तरीका होगा sqlite3 example.db 'SELECT * FROM some_table;', बजाय एक गूंज के
क्रिस्टोफर श्रोबा

1
इसके अलावा, (संपादित करने के बाद), यह दर्शाता है कि sqlite3न केवल से stdin, बल्कि अंतिम तर्क से भी निष्पादित करने के लिए आदेश पढ़ता है।
राफेल अल्मेडा

4

PowerShell का उपयोग करने वालों के लिए

PS C:\> Get-Content create.sql -Raw | sqlite3 auction.db

2

यदि आप windows CMD का उपयोग कर रहे हैं, तो आप sqlite3 का उपयोग करके डेटाबेस बनाने के लिए इस कमांड का उपयोग कर सकते हैं

C:\sqlite3.exe DBNAME.db ".read DBSCRIPT.sql"

यदि आप उस नाम के साथ एक डेटाबेस नहीं रखते हैं, तो sqlite3 एक बना देगा, और यदि आपके पास पहले से ही एक है, तो वह इसे वैसे भी चलाएगा, लेकिन "TABLENAME पहले से मौजूद है" त्रुटि के साथ, मुझे लगता है कि आप इस कमांड का उपयोग पहले से ही बदलने के लिए भी कर सकते हैं डेटाबेस (लेकिन यकीन नहीं है)

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