从控制台向批处理脚本输入mysql

holgip5t  于 2021-06-21  发布在  Mysql
关注(0)|答案(1)|浏览(300)

我想写一个简单的windows批处理脚本,它要求输入某些有效值,并使用这些输入在批处理文件中运行sql查询。例如

@echo off
mysql "-uroot" -p  -h "xx.xx.xx.xx" "abc"
SET /P ntid= Please  enter the  id of the  user:
select * from tbl_employeedetails where empntid=%ntid%;

我想在控制台中请求empntid,然后在sql中获取并替换它,然后运行它。当我运行此命令时,我得到一个错误:

mysql "-uroot" -p  -h "xx.xx.xx.xx" "abc"
Enter password:********
ERROR 1064 (42000) at line 1: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '/P ntid= Please  enter the  NT id of the  user:
select * from tbl_employeedetail' at line 1

实际上,我必须使用来自用户的输入运行多个查询,这将在控制台中得到提示

wnrlj8wa

wnrlj8wa1#

不幸的是你不能这么做。mysql批处理模式提供了运行sql文件的选项,但不支持用户交互。看看这个链接,了解mysql批处理模式https://dev.mysql.com/doc/refman/8.0/en/batch-mode.html
但我用了个小把戏
提示用户在sql脚本中输入所需的内容。
将sql查询写入文件
用mysql运行文件
删除文件
这是一个示例批处理文件

@echo off
set /p name=Enter Name: 
set /p ts=Enter Ts: 
set /p id=Enter ID: 
@echo update `table1` set `t1`.`name` = "%name%" , `t1`.`ts` = "%ts%" where `t1`.`id` = "%id%";> test.sql
set /p name=Enter Name 2: 
set /p ts=Enter Ts 2: 
set /p id=Enter ID 2 : 
@echo update `t1` set `t1`.`name` = "%name%" , `t1`.`ts` = "%ts%" where `t1`.`id` = "%id%";>> test.sql
set /p name=Enter Name 3: 
set /p ts=Enter Ts 3: 
set /p id=Enter ID 3: 
@echo update `t1` set `t1`.`name` = "%name%" , `t1`.`ts` = "%ts%" where `t1`.`id` = "%id%";>> test.sql
set /p name=Enter Name 4: 
set /p ts=Enter Ts 4: 
set /p id=Enter ID 4: 
@echo update `t1` set `t1`.`name` = "%name%" , `t1`.`ts` = "%ts%" where `t1`.`id` = "%id%";>> test.sql
mysql -uroot -p9272 -hlocalhost test < test.sql
del test.sql

希望这能有所帮助。

相关问题