標籤:
在批處理模式
下使用mysql在前面的章節中,你互動式地使用
mysql輸入查詢並且查看結果。你也可以以批模式運行
mysql。為了做到這些,把你想要啟動並執行命令放在一個檔案中,然後告訴
mysql從檔案讀取它的輸入:
shell> mysql < batch-file
如果在Windows下運行mysql,並且檔案中有一些可以造成問題的特殊字元,可以這樣操作:
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。
你還可以使用原始碼或 \.命令從mysql提示符運行指令碼:
mysql> source filename;
mysql> \. filename
e.g 在d:\1.txt
show databses;
select * from menagerie.pet;
然後通過執行mysql -hlocalhost -uroot -p <d:1.txt
執行結果如下所示:
或者我們可以直接將批次檔輸出到指定路徑下以檔案的形式儲存,
C:\Users\David>mysql -hlocalhost -uroot -p123 <d:\1.txt>mysql.out
同樣的為了方便操作,可以這樣執行,
也可以這樣執行,
Mysql批處理