在前幾個章節中,您以互動方式使用 mysql 來輸入陳述式並檢視結果。您也可以在批次模式下執行 mysql。若要執行此操作,請將您要執行的陳述式放入檔案中,然後告知 mysql 從檔案讀取其輸入。
$> mysql < batch-file
如果您在 Windows 下執行 mysql,並且檔案中有一些特殊字元導致問題,您可以這樣做
C:\> mysql -e "source batch-file"
如果您需要在命令列上指定連線參數,則命令可能看起來像這樣
$> mysql -h host -u user -p < batch-file
Enter password: ********
當您以這種方式使用 mysql 時,您正在建立指令碼檔案,然後執行該指令碼。
如果您希望指令碼即使其中的某些陳述式產生錯誤也能繼續執行,則應使用 --force
命令列選項。
為什麼要使用指令碼?以下是一些原因
如果您重複執行查詢(例如,每天或每週),將其設為指令碼可讓您避免每次執行時重新輸入。
您可以從現有類似的查詢產生新的查詢,方法是複製和編輯指令碼檔案。
在您開發查詢時,批次模式也很有用,尤其適用於多行陳述式或多個陳述式序列。如果您犯了錯誤,則不必重新輸入所有內容。只需編輯您的指令碼以更正錯誤,然後告知 mysql 再次執行它。
如果您的查詢產生大量輸出,您可以將輸出透過分頁程式傳送,而不是看著它從螢幕頂端捲動消失
$> mysql < batch-file | more
您可以將輸出擷取到檔案中以進行進一步處理
$> mysql < batch-file > mysql.out
您可以將您的指令碼發佈給其他人,以便他們也可以執行這些陳述式。
某些情況不允許互動使用,例如,當您從 cron 作業執行查詢時。在這種情況下,您必須使用批次模式。
當您在批次模式下執行 mysql 時,預設輸出格式與您以互動方式使用時不同(更簡潔)。例如,當以互動方式執行 mysql 時,SELECT DISTINCT species FROM pet
的輸出看起來像這樣
+---------+
| species |
+---------+
| bird |
| cat |
| dog |
| hamster |
| snake |
+---------+
在批次模式下,輸出看起來像這樣
species
bird
cat
dog
hamster
snake
如果您想在批次模式下取得互動式輸出格式,請使用 mysql -t。若要將執行的陳述式回顯到輸出,請使用 mysql -v。
您也可以使用 source
命令或 \.
命令,從 mysql 提示符號使用指令碼
mysql> source filename;
mysql> \. filename
如需詳細資訊,請參閱 第 6.5.1.5 節,「從文字檔案執行 SQL 陳述式」。