2.3 MySQL批处理
2.3.1 批量执行若干命令
1.批量执行若干MySQL命令的方法
建立扩展名为sql的文本文件,将要执行的若干MySQL语句写入该sql文件中,然后在MySQL客户端用source命令执行该sql文件即可。source命令的格式是“source盘符:/路径/文件名”。
例如,假设文件mysql_create_table.sql保存在E盘application文件夹下的myweb子目录下,要执行该文件中的MySQL命令,则在MySQL命令行客户端输入和执行以下命令即可:“source E:/application/myweb/mysql_create_table.sql;”。当然,执行该sql文件的命令也可以在DOS命令窗口(未连接数据库的情况下)进行,命令格式参见以下“sql文件格式举例”。
2.sql文件格式举例
(1)建立booklending数据库及其数据库表的文件:mysql_create_table.sql
具体语句如下所示。
假如将mysql_create_table.sql文件保存在E盘application文件夹下的myweb子目录下,则在MySQL客户端执行的命令是:“source E:/application/myweb/mysql_create_table.sql;”。
在DOS提示符下(未连接数据库),输入“mysql-hlocalhost-uroot-p12345678<E:/application/myweb/mysql_create_table.sql”(注意DOS命令行末不带分号),再按〈Enter〉键也可执行。
(2)为booklending数据库中的表添加记录的sql文件:mysql_insert_table.sql
具体代码如下所示。
假如将mysql_insert_table.sql文件保存在E盘application文件夹下的myweb子目录下,则执行该文件的MySQL命令是:“source E:/application/myweb/mysql_insert_table.sql;”,执行该文件的DOS命令是:“mysql-h localhost-u root-p12345678<E:/application/myweb/mysql_insert_table.sql”。
2.3.2 批处理命令执行多个sql脚本
(1)方法一:利用MySQL的sql脚本文件批量执行若干个sql脚本
假设有sql脚本mysql_create_table.sql、mysql_insert_table.sql,均保存在E盘application文件夹下的myweb子目录下。若要批处理执行这些sql脚本,则可以在任意一个路径下建立一个sql脚本文件all.sql,该文件中的内容如下:
假设将all.sql文件保存在了E盘application文件夹下的myweb子目录下,则在MySQL命令行客户端执行“source E:/application/myweb/all.sql;”,即可批量执行all.sql文件中所包含的全部sql脚本。
(2)方法二:利用DOS批处理文件执行多个sql脚本
方法一需要为每个sql脚本写一句代码,不适合sql脚本较多的情况。因此sql脚本较多时可利用DOS批处理来实现,即:首先将要执行的所有sql脚本文件存储在同一个目录下,然后在其他目录下建立一个扩展名为“.bat”的批处理文件(例如存储为all.bat),之后在DOS命令提示符窗口执行该批处理文件即可。以执行“E:\application\myweb\”目录下所有的sql脚本为例,其批处理代码如下:
说明:
1)上述代码中,第二行do与右边的左括号“(”之间必须至少有一个空格。
2)@符号在批处理中的作用是关闭当前行命令的回显,也就是不显示执行的是什么命令,只显示命令的结果。
3)echo是一个回显命令,主要参数有off和on;一般用“echo消息”来显示一个特定的消息;echo off的作用就相当于在每条命令前面加一个@符号,这样所有的命令将只会显示结果不显示命令;在echo off这命令前加一个@符号是为了不让echo off这条命令本身显示出来。
4)“for条件do (…)”是循环结构,条件满足时执行括号中的循环体;此处条件是“变量in (集合)”,变量的值依次取集合中的每个元素时分别执行循环体。
5)pause命令就是暂停的意思,防止批处理执行完后直接退出;执行pause命令后会自动在CMD里显示“请按任意键继续…”这样一行提示。
6)假设该批处理文件保存为all.bat,存储在D盘根目录下,则在DOS命令提示符窗口执行“d:\all.bat”,即可批量执行“E:\application\myweb\”目录下所有的sql脚本。