2012-04-19 10 views
19

पर पैरामीटर पास करें क्या कमांड लाइन से MySQL स्क्रिप्ट में पैरामीटर पास करने का कोई विकल्प है? इस उदाहरण मेंMySQL स्क्रिप्ट कमांड लाइन

कुछ @start_date की तरह:

mysql –uuser_id -ppassword –h mysql-host -A -e 
"set @start_date=${start_date}; source ${sql_script};" >${data_file}; 
+0

@ काई वह संभवतः "स्क्रिप्टिंग चर" जैसे कुछ ढूंढ रहे हैं [SQL सर्वर का SQLCMD '-v' विकल्प] के साथ समर्थन करता है (http://msdn.microsoft.com/en-us/library/ms162773 .aspx)। –

उत्तर

36

शुद्ध here पर एक जवाब मिला।

असल में, लगता है कि हम इस क्वेरी चलाना चाहते हैं:

Select c_id, c_first_name,c_last_name, c_address,last_modified_date 
from customer 
where last_modified_date >[email protected]_date and last_modified_date <= @end_date; 

हम 'start_date' और 'end_date' इस तरह से पारित कर सकते हैं:

/usr/bin/mysql –uuser_id -ppassword –h mysql-host -A \ 
    -e "set @start_date=${start_date}; set @end_date=${end_date};\ 
     source ${sql_script};" > ${data_file} 
+0

यह ध्यान देने योग्य है कि यह वह चर है जो इस चर को फैलाता है, इसलिए यह उत्तर एक * निक्स खोल का तात्पर्य है। – sastorsl

0

"-e" विकल्प समझदार है

mysql –uuser_id -ppassword –h mysql-host -A -e 
"set @start_date=\"$start_date\"; source \"$sql_script\";" >\"$data_file\";" 
1

लघु जवाब: इस्तेमाल किया उद्धरण के लिए, दोहरे उद्धरण कोशिश

बैश:

 mysql -u"$mysql_user" -p"$mysql_user_pw" \ 
     -e "set @mysql_db='$mysql_db';source \ 
     00.create-mysql-starter-db.mysql ;" > "$tmp_log_file" 2>&1 

mysql:

 SET @query = CONCAT('CREATE DATABASE /*!32312 IF NOT EXISTS*/ `' 
    , @mysql_db , '` /*!40100 DEFAULT CHARACTER SET utf8 */') ; 
    -- SELECT 'RUNNING THE FOLLOWING query : ' , @query ; 
     PREPARE stmt FROM @query; 
     EXECUTE stmt; 
     DEALLOCATE PREPARE stmt; 

लांग जवाब: एक runnable बैश, mysql एप्लिकेशन के रूप में पूरी अवधारणा:

https://github.com/YordanGeorgiev/mysql-starter

या

git clone [email protected]:YordanGeorgiev/mysql-starter.git 
संबंधित मुद्दे