使用批处理的方式使用MySQL

在前面的章节,我们使用mysql交互模式输入语句和查看结果。我们也可以以批处理的模式来运行mysql。要达到这种目的,需要把我们想运行的语句放在一个文件里,然后告诉mysql从文件读取它的输入。

  1. shell> mysql < batch-file

如果你是在Windows下运行mysql,文件里的一些特定字符会引起一些问题,你要这样做:

  1. C:\> mysql -e "source batch-file"

如果你需要在命令行指定连接参数,命令应该是这样子的:

  1. shell> mysql -h host -u user -p < batch-file
  2. Enter password: ********

当你使用mysql这种方式,你要创建一个脚本文件,然后执行这个脚本。

如果你想让脚本继续执行,尽管有些语句在执行过程中出现错误,你应该使用—force命令行选项。

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

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

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

  1. species
  2. bird
  3. cat
  4. dog
  5. hamster
  6. snake

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

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

  1. mysql> source filename;
  2. mysql> \. filename

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