ввод SQL в пакетный скрипт из консоли - PullRequest
0 голосов
/ 29 апреля 2018

Я хотел бы написать простой пакетный скрипт 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

На самом деле мне нужно выполнить несколько запросов с вводами от пользователя, которые будут отображаться в консоли

1 Ответ

0 голосов
/ 29 апреля 2018

к сожалению, вы не можете этого сделать. Пакетный режим MySQL дает вам возможность запустить файл SQL, но взаимодействие с пользователем не поддерживается. взгляните на эту ссылку, чтобы понять пакетный режим MySQL https://dev.mysql.com/doc/refman/8.0/en/batch-mode.html

но я использую маленький трюк, чтобы сделать это

  1. запрашивает у пользователя вводимые данные в сценарии sql.
  2. записать sql запросы в файл
  3. запустите файл с помощью mysql
  4. удалить файл

это образец командного файла

@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

надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...