2009-04-16 81 views
1

我試圖創建一個批處理腳本,將連接到MySQL數據庫併發出一個刪除命令:批處理腳本發出命令到mySQL數據庫?

@echo off 
echo Resetting all assessments... 
mysql -hlocalhost -urdfdev -p%1 rdf_feedback 
delete from competency_question_answer; 

我會運行此腳本提供密碼作爲命令行參數,但所有這些腳本的作用是,連接到數據庫,並且將顯示mysql>提示。在我離開mysql之後,剩下的批處理命令開始執行(並且失敗,毫不奇怪)。

如何將批處理腳本中的SQL命令傳遞給mysql控制檯?這甚至有可能嗎?

回答

3

您需要使用命令行工具。我不知道MySQL是否存在,但是對於SQL而言,存在SQLCMD,而Oracle則存在OSQL。

你也可以做的是這樣的。

mysql -uuser -ppass < foo.sql 

其中foo.sql是您要執行的命令。

2

echo "delete from competency_question_answer;" | mysql -hlocalhost -ur...

+0

似乎正朝着正確的方向發展,但我得到: 錯誤1064(42000)在第1行:您的SQL語法有錯誤;檢查與您的MySQL服務器版本相對應的手冊,以便在第1行 – 2009-04-16 12:46:31

+0

''從'competency_question_answer;'中刪除''時使用正確的語法。當我手動輸入到mysql控制檯時,該命令是可以的...另外,我將如何傳遞更多的命令?似乎有一個問題,所有的雙引號 – 2009-04-16 12:47:43

3

您可能需要多次連接:

@echo off 
echo Resetting all assessments... 
mysql -hlocalhost -urdfdev -p%1 rdf_feedback -e delete from competency_question_answer; 

或者,你應該可以把你所有的命令在一個單獨的文件,例如input.sql及用途:

mysql -hlocalhost -urdfdev -p%1 rdf_feedback <input.sql 
1

把多套的命令轉換爲.sql批處理文件效果最佳,並且您可以在.bat文件中執行這些命令的倍數。