सवाल ओरेकल एसक्यूएल स्क्रिप्ट चलाएं और कमांड प्रॉम्प्ट के माध्यम से sqlplus.exe से बाहर निकलें


मैं एक विंडोज कमांड प्रॉम्प्ट के माध्यम से एसक्यूएल प्लस के माध्यम से ओरेकल स्क्रिप्ट चलाने के लिए चाहता हूं। स्क्रिप्ट में "निकास" कमांड नहीं है, लेकिन मुझे अभी भी एसक्यूएल प्लस से बाहर निकलना होगा, स्क्रिप्ट के पूरा होने पर कमांड प्रॉम्प्ट पर नियंत्रण वापस करना होगा। मेरा लक्ष्य यह करना है के बिना स्क्रिप्ट को संशोधित करना क्या यह संभव है?


101
2017-09-22 23:33


मूल


क्या आप इसे "sqlplus .... <scriptname" या "sqlplus ... @scriptname" के साथ निष्पादित कर रहे हैं ?? यूनिक्स पर आप जो भी करते हैं उसके आधार पर मुझे अलग-अलग व्यवहार मिलते हैं। - runrig


जवाब:


बैच फ़ाइल में इस कमांड का उपयोग करने का एक और तरीका है:

echo exit | sqlplus user/pass@connect @scriptname

128
2017-09-23 12:28



ठंडा! क्या आप जानते हैं कि "एक्जिट" को एसकप्लस सत्र में कैसे जोड़ा जाता है?
Sqlplus कमांड स्क्रिप्ट चलाता है तो मानक इनपुट से अधिक कमांड पढ़ने की कोशिश करता है। इस पाइपलाइन के साथ, मानक इनपुट से पढ़ने से इको कमांड से स्ट्रिंग "एक्जिट" पढ़ा जाएगा, जिससे एसक्लप्लस से बाहर निकलने का कारण बनता है। - Dave Costa
बढ़िया - यह वही है जो मैं ढूंढ रहा था। धन्यवाद! - JoshL
सावधान रहें कि आप यूनिक्स (ps -ef) पर proces सूची के माध्यम से अपना उपयोगकर्ता नाम पासवर्ड बेनकाब करते हैं, लेकिन मुझे यकीन है कि यह विंडोज़ पर उसी तरह काम करता है - Robert Merkwürdigeliebe
stackoverflow.com/questions/1639704/... तथा dba.stackexchange.com/a/65064/16892 आदेश पंक्ति पर पासवर्ड का उपयोग करने के कुछ तरीकों का वर्णन करें ... - rogerdpack


मैंने यह सबसे अच्छा समाधान पाया और यह एक टर्मिनल में या एक स्क्रिप्ट के भीतर काम करता है:

echo @scriptname | sqlplus username/password@connect

12
2017-10-26 12:21



हालांकि यह तकनीकी रूप से प्रश्न का उत्तर दे सकता है, यह अन्य उत्तरों का एक डुप्लिकेट है और थोड़ा मूल्य जोड़ता है। साथ ही, अगर आप समझाते हैं कि ये आदेश क्या कर रहे हैं तो यह दूसरों की मदद करेगा। धन्यवाद! - Chris S
यह मेरे लिए काम करता है और मुझे इसे शीर्ष उत्तर से अधिक सुरुचिपूर्ण लगता है क्योंकि यह 'बाहर निकलने' से बचाता है। - Bogdan Calmac


उपयोगकर्ता की जानकारी और निकास को छिपाने का सबसे अच्छा तरीका यह है:

exit | sqlplus -S user/pwd@server @script.sql

exit एसकप्लस के आउटपुट के लिए इसे छोड़ने के लिए मजबूर किया जाता है। -S स्क्रिप्ट में एसक्यूएल क्वेरी के बाद सभी सर्वर आउटपुट को पीछे छोड़ देता है।


12
2018-03-18 21:20



अगर एसएसएच का उपयोग करना छोड़ना है बाहर निकलने के बजाय | ताकि यह आपके एसएसएच सत्र को बंद न करे अगर फाइल को बाद में बाहर निकलने के लिए संपादित किया गया हो या इसमें छोड़ दिया जाए। यह काम करता है अगर फ़ाइल भी नहीं मिली है। - Karl Henselin


अब यह समझते हुए कि आपकी समस्या एसक्यूएल फ़ाइल के साथ ही हो सकती है, यह समझें कि एसक्यूप्लस को बाहर निकलने के लिए कहा जाना चाहिए। जिस तरह से मैं यह करता हूं:

दोहरी से * चुनें;

छोड़;
/

(स्लैश महत्वपूर्ण है। यह उपरोक्त राज्यमेट को निष्पादित करने के लिए एसक्लप्लस को बताता है।)


11
2017-09-23 16:04



ध्यान दें कि डेव कोस्टा का जवाब भी काम करता है: sqlplus कमांड में बाहर निकलना (या छोड़ना) पाइपिंग।
/ चाल के लिए धन्यवाद, मैं इस जानकारी की तलाश में था!
स्लैश का अर्थ SQL बफर में क्या है निष्पादित करना है। यह एकाधिक कथन निष्पादित नहीं करता है, और "छोड़ें" जैसे SQLPlus नियंत्रण आदेश निष्पादित करना आवश्यक नहीं है। यदि आप एक इंटरैक्टिव SQLPlus प्रॉम्प्ट पर "छोड़ें" <Enter> टाइप करते हैं, तो यह तुरंत बाहर निकल जाएगा। - Dave Costa


आप इसे अपनी शेल स्क्रिप्ट में भी कर सकते हैं।

sqlplus /nolog <<EOF
connect user/pass
@run_some_file.sql
select * from dual;
EOF

आपको ";" से बचने की आवश्यकता हो सकती है के साथ \।


6
2017-09-23 12:33





ऐशे ही:

sqlplus / nolog उपयोगकर्ता आईडी / पासवर्ड @ tnsname @filename

यदि आप इसे बैच फ़ाइल में डालते हैं, तो उसके बाद कथन (कों) के साथ नियंत्रण जारी रहेगा।

संपादित करें: मेरा बुरा, फिर से / नाओल ध्वज के साथ प्रयास करें


4
2017-09-22 23:43



दुर्भाग्य से, यह काम नहीं करता है। जब मैं बैच फ़ाइल निष्पादित करता हूं, SqlPlus कमांड प्रॉम्प्ट पर नियंत्रण लौटने के बजाय उपयोगकर्ता इनपुट के लिए SQL> प्रॉम्प्ट पर प्रतीक्षा करता है। - JoshL
क्षमा करें, यह या तो काम नहीं करता है। / nolog sqlplus को लॉग ऑन किए बिना शुरू करने की अनुमति देता है। जब यह पूरा हो जाता है तो स्क्रिप्ट से बाहर निकलने के लिए इसका कोई लेना-देना नहीं है। - JoshL
हम्म, मैं पर्यावरण मतभेदों के बारे में आश्चर्यचकित होना शुरू कर रहा हूं। मेरे पास कई बल्ले स्क्रिप्ट हैं जो इस तरह से एसक्लप्लस का उपयोग करते हैं।
क्रिस, क्या आप एक कामकाजी उदाहरण प्रदान कर सकते हैं? बस कुछ सरल जो "दोहरी से चुनिंदा" या कुछ चलाता है ... मैंने आपके सुझावों का प्रयास करने के लिए उदाहरण नहीं बनाए हैं, इसका कोई फायदा नहीं हुआ है। याद रखें कि यह विंडोज़ पर है। - JoshL
जोश, नीचे नया जवाब देखें।


हां, यह संभव है - एक रैपर स्क्रिप्ट उत्पन्न करें जो SQLPlus को उचित रूप से सेट करता है, इसमें आपकी स्क्रिप्ट शामिल है (यानी। @YourTargetScript.sql), और फिर बाहर निकलें।

उस ने कहा, मैं इस दृष्टिकोण की बिल्कुल अनुशंसा नहीं करता - एसक्यूएलप्लस प्रोग्रामेटिक उपयोग के लिए बहुत सारे गॉथस हैं; ओरेकल का उपयोग करने वाले अतीत में शैल स्क्रिप्ट लिखते समय, मैंने इसके चारों ओर एक पायथन रैपर बनाया (अधिक उचित त्रुटि-हैंडलिंग व्यवहार, stdout / stderr, देशी सीएसवी आउटपुट समर्थन, और अन्य ऐसी उपहारों के बीच आउटपुट का सेन अलगाव), और यह काम किया काफी बेहतर।


3
2017-09-22 23:40



किसी अन्य कार्यक्रम के साथ मैं आपसे सहमत हूं। लेकिन मैंने पाया कि एसक्यूएलप्लस ने मुझे एक बुरी क्वेरी पर उपयोगी संदर्भ दिया है कि अन्य वातावरण (मेरे मामले में पर्ल / डीबीआई / डीबीडी :: ओरेकल) में नहीं था। यदि आप सावधानीपूर्वक त्रुटि प्रबंधन कर रहे हैं, तो यह दर्द के लायक हो सकता है।
इसके अलावा, सर्वर पर आपके पास कितना नियंत्रण है, इस पर निर्भर करता है कि आप शैल और एसक्यूएलप्लस के अलावा कुछ और हासिल करने में सक्षम नहीं हो सकते हैं। सोलारिस, एचपी / यूएक्स, एईक्स चलाने वाली बहुत सी स्टिकियर यूनिक्स दुकानें और इस तरह के बहुत ही नंगे इंस्टॉलेशन का उपयोग करते हैं और आपको बॉक्स पर कुछ और इंस्टॉल करने नहीं देंगे। ध्यान दें कि कभी-कभी इसके लिए एक कामकाज सिर्फ आपके आवेदन के साथ एक न्यूनतम दुभाषिया बंडल करना है। - ConcernedOfTunbridgeWells


स्क्रिप्ट में अपना पासवर्ड शामिल करने की सुरक्षा के बारे में चिंतित लोगों के लिए, AskTom के पास "बाहरी रूप से पहचाने जाने" के बारे में एक लेख है http://asktom.oracle.com/pls/apex/f?p=100:11:0::::P11_QUESTION_ID:142212348066


1
2017-07-16 19:38



जबकि यह सैद्धांतिक रूप से सवाल का जवाब दे सकता है, यह बेहतर होगा यहां उत्तर के आवश्यक हिस्सों को शामिल करने के लिए, और संदर्भ के लिए लिंक प्रदान करें। - Scott Pack


अपने एसक्यूएल स्क्रिप्ट में EXIT जोड़ें। यहां उदाहरण है मेरी test.bat फ़ाइल का पालन कर रहा है:

sqlplus उपयोगकर्ता / pwd @ सर्वर @ test.SQL> myLOG.LOG

मेरी test.sql फ़ाइल का पालन कर रहा है: दोहरी से * चुनें; बाहर जाएं


0
2018-06-19 20:40



यह ठीक है, लेकिन बाहर निकलने / छोड़ने के बयान को शामिल करने के लिए स्क्रिप्ट को संशोधित किए बिना ऐसा करने की आवश्यकता को पूरा नहीं करता है। इरादा यह है कि इन स्क्रिप्ट को एसक्यूएल प्लस से डीबीए द्वारा चलाया जा सकता है, लेकिन बैच फ़ाइल से भी चलाया जा सकता है। - JoshL


बाहर निकलें | एसक्यूएलपीएलयूएस @ @ @

यह सही समाधान है, मैंने कोशिश की है कि यह काम कर रहा है


0
2017-11-20 06:57