使用批处理的方式使用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](https://dev.mysql.com/doc/refman/5.7/en/mysql-command-options.html#option_mysql_force)命令行选项。

为什么要使用一个脚本?这里有一些原因:

  • 如果你想重复地运行一个查询(比如每天或每星期),写成一个脚本可以让你避免每次执行的时候重新输入。
  • 你可以从已有相似的脚本中,通过复制和编辑这些脚本,从而产生一些新的查询。
  • 当你正在开发一个查询,尤其是那种多行语句或多行语句的序列,批处理模式也是有用的。如果你犯了一个错误,你不需要重新输入每件事。你仅仅需要编辑脚本修正错误,然后告诉mysql重新执行。
  • 如果你有一个查询,这个查询会产生许多输出,你可以通过分页展出输出,而不是用滚动条滚动你的屏幕。 shell> mysql < batch-file | more
  • 对于进一步的处理,你可以捕获输出到一个文件里。 shell> mysql < batch-file > mysql.out
  • 你可以分发你的脚本给其他人,使得他们也可运行这些语句。
  • 一些不允许交互使用的情况,比如,当你执行一个计划任务的查询。在这种情况下,你必须使用批处理模式。

当你以批处理方式执行mysql的时候,默认的输出格式(更加简洁)是不同于当你交互地使用mysql。例如,当使用交互的方式执行mysql,SELECT DISTINCT species FROM pet的输出是像这样的:

+---------+
| species |
+---------+
| bird    |
| cat     |
| dog     |
| hamster |
| snake   |
+---------+

在批处理的模式下,它的输出是这样的:

species
bird
cat
dog
hamster
snake

如果你在批处理模式的时候,想得到交互型模式的输出格式,使用mysql -t。要在输出中显示执行的语句,使用mysql -v

你也可以在mysql命令行,通过使用\.命令来使用脚本:

mysql> source filename;
mysql> \. filename

想学习更多,请参考“Executing SQL Statements from a Text File

results matching ""

    No results matching ""