在批处理模式下使用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时,比起你交互地使用它时,其默认输出格式是不同的(更简明些)。例如,当交互式运行SELECT DISTINCT species FROM pet时,输出应为:

 


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



但是当以批模式运行时,输出应为:


species
 
     
bird
 
     
cat
 
     
dog
 
     
hamster
 
     
snake



如果你想要在批模式中得到交互输出格式,使用mysql -t。为了回显以输出被执行的命令,使用mysql -vvv。

你还可以使用源代码或 \.命令从mysql提示符运行脚本:

mysql> source filename;
mysql> \. filename



e.g 在d:\1.txt

show databses;

select * from menagerie.pet;

然后通过执行mysql -hlocalhost -uroot -p <d:1.txt

执行结果如下所示:

MySQL批处理 会锁表 mysql数据批处理_命令行

或者我们可以直接将批处理文件输出到指定路径下以文件的形式存储,

C:\Users\David>mysql -hlocalhost -uroot -p123 <d:\1.txt>mysql.out

MySQL批处理 会锁表 mysql数据批处理_数据库_02

 同样的为了方便操作,可以这样执行,

MySQL批处理 会锁表 mysql数据批处理_MySQL批处理 会锁表_03

 也可以这样执行,

MySQL批处理 会锁表 mysql数据批处理_命令行_04