在前面的章節中,你交互式地使用mysql輸入查詢並且查看結果。你也可以以批模式運行mysql。為了做到這些,把你想要運行的命令放在一個文件中,然後告訴mysql從文件讀取它的輸入:
shell> mysql < batch-file
如果你是在Windows系統下運行,並且你的文件中有一些可能會造成問題的特殊字符,你可以這麼做:
C:\> mysql -e "source batch-file"
如果你需要在命令行上指定連接參數,命令應為:
shell> mysql -h host-u user-p < batch-file
Enter password: ********
當這樣操作mysql時,你先創建了一個腳本文件,然後執行腳本。
如果你想繼續執行這個腳本,即使腳本中的語句可能會產生一些錯誤,那麼你就需要使用 –force命令行選項。
為什麼使用腳本?有很多原因:
如果你需要重復運行查詢(比如說,每天或每周),可以把它編成一個腳本,則每次執行時不必重新鍵入。 可以通過拷貝並編輯腳本文件從類似的現有的查詢生成一個新查詢。 當你正在編寫查詢時,批模式也是很有用的,特別對多行命令或多語句命令序列。如果你犯了一個錯誤,你不必重新輸入所有內容,只需要編輯腳本來改正錯誤,然後告訴mysql再次執行腳本。 如果你有一個產生多個輸出的查詢,你可以通過一個分頁器而不是盯著它翻屏到屏幕的頂端來運行輸出:
shell> mysql < batch-file| more
你可以捕捉文件中的輸出以便進行進一步的處理:
shell> mysql < batch-file> mysql.out
你可以把你的腳本分發給其他人,那麼他們也可以運行這些語句。 某些情況不允許交互使用查詢,例如, 當你從一個cron任務中運行查詢時。在這種情況下,你必須使用批模式。
當你以批模式運行mysql時,比起你交互地使用它時,其默認輸出格式是不同的(更簡明些)。例如,當交互式運行SELECT DISTINCT species FROM pet時,輸出應為:
+---------+
| species |
+---------+
| bird |
| cat |
| dog |
| hamster |
| snake |
+---------+
但是當以批模式運行時,輸出應為:
species
bird
cat
dog
hamster
snake
如果你想得到交互式的輸出格式,使用 mysql -t. 為了回顯以輸出被執行的命令,使用mysql -vvv.
你還可以使用source命令或 .命令從mysql提示符中使用腳本:
mysql> source filename;
mysql> \. filename
更多內容請查看
Section 4.5.1.5, “Executing SQL Statements from a Text File”