• 使用批处理的方式使用MySQL

    使用批处理的方式使用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”

    原文: https://strongyoung.gitbooks.io/mysql-reference-manual/content/tutorial/using_mysql_in_batch_mode.html