前面交互式地运行mysql输入命令,查看结果.你也可以以批处理模式运行mysql,将你想运行的命令存放在文件中,让mysql从该文件读入命令:

1
shell> mysql < batch-file

如果你在Windows下,文件中的一些字符出现问题,可以这样做:

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

如果你需要在命令行中指定连接参数,命令可能像这样:

1
2
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

  • 你可以向别人分享你的脚本,这样他们也可以运行这些命令;
  • 一些情形下不允许交互式地运行mysql.

以批处理模式运行mysql和交互式地运行,默认的输出形式是不同的,例如:

C:/SQL/in.txt路径下in.txt的内容为:

USE menagerie;
SELECT DISTINCT species
FROM pet;

批处理模式的输出为:

1
2
3
4
5
6
7
8
shell> mysql -u uesr -p <C:/SQL/in.txt
Enter password: ********
species
bird
cat
dog
hamster
snake

交互式的输出为:

1
2
3
4
5
6
7
8
9
10
mysql> SELECT DISTINCT species FROM pet;
+—————————+
| species |
+—————————+
| bird |
| cat |
| dog |
| hamster |
| snake |
+—————————+

如果想让批处理模式下的输出形式像交互式那样,使用-t选项,输出脚本中被执行的命令使用-vvv选项.

你也可以通过source,\.命令使用脚本:

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

英文原文:

Using mysql in Batch Mode