在批处理模式下使用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
时,默认输出格式与交互使用时的默认输出格式不同(更简洁)。例如,当交互式运行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