您的位置:首页 > 数据库 > MySQL

windows批处理下操作mysql

2014-04-18 09:37 190 查看
由于需要,最近小研究了下批处理操作mysql的问题,作为记录存档。

结构是这样的,exesql.bat为批处理文件,用于操作mysql的                                bin目录下则有这些个文件


                                                                                     


然后mysql数据库中有个数据库叫mes,有个表叫users,结构如下:



批处理文件exesql.bat代码如下:

@echo off

rem 需要执行的sql语句,用echo sql来执行
cd bin
(
echo use mes;
echo select * from users;
for /l %%i in (100, 1, 120) do @echo insert into users set id='%%i', password='abc';
) | mysql --host=127.0.0.1 --user=root --password=root

cd ..
pause


执行完的效果:





1.mysql的登录指令命令:
mysql --host=127.0.0.1 --user=root --password=root

不用说,host主机名,user用户名,password密码,具体参数执行mysql -?查看

2.注意点:

     a.在括号里面的代码,不能加rem来做注释,不明白这控制台是什么玩意儿,比如下面这样是不行的

(

   rem 选择数据库mes

   echo use mes;

)

嗯嗯,这样的rem在里面都不行,切...

     b.括号里面循环的问题,经过多次测试发现,for还不能用括号来操作,比如下面:

(

   echo use mes;

   .....

   for /l %%i in (100, 1, 120) do (

     @echo insert into users set id='%%i', password='abc';

   )

) | mysql --host=127.0.0.1 --user=root --password=root

这样是不行的,由于for里面的echo语句会产生路径在里面,比如我的批处理路径是在G:\Hope\temp里面,而实际到达mysql的时候,不是预期的insert into users...而是这么回事:

G:\Hope\temp\bin>echo insert into users set id='1', password='abc';

那么mysql得到这一句“sql”的时候会报错说无效的指令\H,所以还必须得一行写完for语句,并且echo前面的小老鼠“@”还不能少了

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  批处理文件 mysql