Using mysql in Batch Mode
在前面的章节中,你使用mysql的互动的输入语句和观察结果。你也可以batch模式运行mysql。为了这样做,把你想运行的语句放在文件里,然后告诉mysql从这个文件中读取输入:
shell> mysql < batch-file
如果你的mysql运行在Windows上并有一些特殊的字符在文件里,你可以这样做:
c:\> mysql -e "source batch-file"
如果你需要在命令行指定连接参数,那么命令看起来像这样:
shell> mysql -h host -u user -p < batch-file
当你以这种方式使用mysql时,你正创建一个脚本文件,然后执行脚本。
如果当一些语句产生错误时你还想继续运行脚本,你应该使用--force命令行参数。
为什么使用脚本呢? 这里有一些原因:
- 如果你重复的运行一个查询(每天,每周),使这样的查询变为脚本可以使你避免每次都重复的键入来执行查询
- 相似的查询语句可以从以存在的语句中复制和稍作修改然后生成了新的查询
- Batch模式也很有用当你在发展一个查询,特别是多行语句或多行语句的后续。如果你犯了个错误,你不用重复键入所有东西。仅编辑你的脚本来修正错误,然后告诉mysql再执行一次
- 如果查询产生大量的输出,你可以运行把输出放进纸里,而不是从屏幕中看他滚下去:
shell> mysql < batch-file | more
你可以捕获输出到文件里在未来进行处理:
shell> mysql < batch-file > mysql.out
- 你可以把你的脚本发行给别人,这样别人也可以运行你的语句
- 一些环境不适合用解释器,例如当你在cron执行一个查询时。这在种情况下,你必须要用batch模式
默认的输出格式会有不同(更加的简洁)当你以bath模式运行mysql而不是解释器。例如,在解释器中SELECT DISTINCT species FROM pet的输出:
mysql> select distinct species from pet;
+---------+
| species |
+---------+
| cat |
| dog |
| bird |
| snake |
| hamster |
+---------+
在batch模式下,输出看起来像这样:
species
bird
cat
dog
hamster
snake
如果你想在batch模式下得到解释器格式的输出,使用mysql -t.输出已经执行的语句,使用mysql -v.
你也可以在mysql命令提示符下使用脚本通过使用source命令 或 . filename
查看Section 4.5.1.5 "Executing SQL Statements from a Text File",获取更多的信息