2014-10-27 167 views
1

我很難相信這個問題以前從未有人問過,它必須是!我正在處理需要運行一些sql命令的批處理文件。所有教程解釋這不起作用(指這個鏈接:Pass parameters to sql script,有人會毫無疑問提及)!我已經逐字逐句嘗試了這個網站上的其他帖子,仍然沒有任何工作。將參數從批處理文件傳遞到MYSQL腳本

的方式我認爲,有兩種方法,我可以處理這個: 1.可以弄清楚如何調用我的基本MYSQL腳本,並指定一個參數或.. 2.找到一個相當於「USE」;在批量工作

我的批處理到目前爲止文件命令:

:START 
@ECHO off 

:Set_User 
set usrCode = 0 

mysql -u root SET @usrCode = '0'; \. caller.sql 

簡單地說,我想通過「usrCode」我的MYSQL腳本「caller.sql」它看起來像這樣:

USE `my_db`; 
CALL collect_mismatch(@usrCode); 

我知道程序是一個完整的其他話題,但假設程序工作得很好。我只是無法從Batch到MYSQL獲取我的參數。

理想情況下,我希望在我的批處理文件中有'USE'&'CALL'命令,但是在調用我的過程之前,我找不到任何讓我選擇批處理的數據庫。那時候我嘗試了上面的鏈接,它擁有一個簡單的命令行條目,並且你正在參加比賽,但事實並非如此。

任何幫助將不勝感激。

+0

刪除SET Batch命令中的空格:'set usrCode = 0' – Aacini 2014-10-27 21:37:06

+0

哈哈,你的評論最終幫助我完成了。我在下面的答案中嘗試了一切,完全忘記了Batch變量規則。謝謝! – 2014-10-27 23:36:11

回答

3

這會工作;

echo SET @usrCode = '0'; > params.sql 
type params.sql caller.sql | mysql -u root dbname 
+1

真棒,感謝您的快速回復! :)只有我有問題,因爲我想從這樣的東西中學習。 type命令和調用mysql之間的「|」的功能是什麼? – 2014-10-27 23:35:12

+0

這是一個管道,它將左側(stdout)的打印數據發送到右側(stdin)的輸入流。 – harvey 2014-10-28 01:40:40

+0

現在我知道了。謝啦! – 2014-10-29 16:00:05

相關問題