Windows | 批处理下操作mysql

  • 内容
  • 相关

由于需要,最近小研究了下批处理操作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

执行完的效果如图所示:

 关键点:

1mysql的登录指令命令: mysql --host=127.0.0.1 --user=root --password=root 不用说,host主机名,user用户名,password密码,具体参数执行mysql -?查看;

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

(
rem 选择数据库mes
echo use mes;
)

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

3括号里面循环的问题,经过多次测试发现,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前面的 “@”还不能少了

 您阅读这篇文章共花了:

上一篇:华为网络基础 | CIDR无类别域间路由

下一篇:华为网络基础 | 数据通信基础知识-奈氏准则和香农公式

本文标签:    

版权声明:本文依据CC-BY-NC-SA 3.0协议发布,若无特殊注明,本文皆为《fishyoung》原创,转载请保留文章出处。

本文链接:Windows | 批处理下操作mysql - http://www.fishyoung.com/post-178.html