在前幾節中,您以互動方式使用 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 陳述式」。