2009-09-23 12 views
13

मेरे पास कुछ SQL स्क्रिप्ट हैं जिन्हें मैं स्वचालित करने की कोशिश कर रहा हूं। अतीत में मैंने एसक्यूएल * प्लस का उपयोग किया है, और एक बैश स्क्रिप्ट से मैन्युअल रूप से sqlplus बाइनरी कहा जाता है।आप बैश स्क्रिप्ट के भीतर से SQL कैसे निष्पादित करते हैं?

हालांकि, मैं यह पता लगाने की कोशिश कर रहा हूं कि डीबी से कनेक्ट करने का कोई तरीका है या स्क्रिप्ट को बैश स्क्रिप्ट के अंदर से कॉल करें ... ताकि मैं date डाल सकूं और क्वेरी को सापेक्ष बना सकूं अतीत में कुछ दिनों की संख्या।

उत्तर

19

मैं थोड़ा उलझन में हूं। आप bash स्क्रिप्ट के भीतर से sqlplus को कॉल करने में सक्षम होना चाहिए। यह हो सकता है कि आप अपने पहले बयान

कोशिश अपने bash स्क्रिप्ट के भीतर निम्नलिखित निष्पादित साथ क्या कर रहे थे:

#!/bin/bash   
echo Start Executing SQL commands 
sqlplus <user>/<password> @file-with-sql-1.sql 
sqlplus <user>/<password> @file-with-sql-2.sql 

आप अपनी स्क्रिप्ट में डेटा पारित करने में सक्षम होना चाहते हैं आप द्वारा sqlplus के माध्यम से यह कर सकते हैं स्क्रिप्ट में तर्क गुजर:

फ़ाइल-साथ-एसक्यूएल-1.sql

select * from users where username='&1'; 

फिर ch की सामग्री Ange बैश स्क्रिप्ट मूल्य

#!/bin/bash 

MY_USER=bob 
sqlplus <user>/<password> @file-with-sql-1.sql $MY_USER 
-4

बैश के रूप में एसक्यूएल डेटाबेस कनेक्टिविटी में निर्माण किया है नहीं करता है में गुजर sqlplus कॉल करने के लिए ... आप तीसरे पक्ष के उपकरण के कुछ प्रकार का उपयोग करने की आवश्यकता होगी।

+6

sqlplus _is_ कि "तृतीय पक्ष उपकरण" – michael

-3

यहाँ बैश में MySQL क्वेरी चलाने sqlplus को

mysql -u [database_username] -p [database_password] -D [database_name] -e "SELECT * FROM [table_name]" 
+3

ओपी ओरेकल उपयोग कर रहा है। –

+0

यह ओरेकल नहीं है। –

0

हो सकता है कि आप कर सकते हैं पाइप SQL क्वेरी शेल का एक आसान तरीका है। यह mysql के लिए काम करता है:

echo "SELECT * FROM table" | mysql --user=username database 
8

तुम भी एक ही बात करने के लिए एक "यहाँ दस्तावेज़" का उपयोग कर सकते हैं:

VARIABLE=SOMEVALUE 

sqlplus connectioninfo << HERE 
start file1.sql 
start file2.sql $VARIABLE 
quit 
HERE