2014-10-27 163 views
1

我很难相信这个问题以前从未有人问过,它必须是!我正在处理需要运行一些sql命令的批处理文件。所有教程解释这不起作用(指这个链接:Pass parameters to sql script,有人会毫无疑问提及)!我已经逐字逐句尝试了这个网站上的其他帖子,仍然没有任何工作。将参数从批处理文件传递到MYSQL脚本

的方式我认为,有两种方法,我可以处理这个: 1.可以弄清楚如何调用我的基本MYSQL脚本,并指定一个参数或.. 2.找到一个相当于“USE”;在批量工作

我的批处理到目前为止文件命令:

:START 
@ECHO off 

:Set_User 
set usrCode = 0 

mysql -u root SET @usrCode = '0'; \. caller.sql 

简单地说,我想通过“usrCode”我的MYSQL脚本“caller.sql”它看起来像这样:

USE `my_db`; 
CALL collect_mismatch(@usrCode); 

我知道程序是一个完整的其他话题,但假设程序工作得很好。我只是无法从Batch到MYSQL获取我的参数。

理想情况下,我希望在我的批处理文件中有'USE'&'CALL'命令,但是在调用我的过程之前,我找不到任何让我选择批处理的数据库。那时候我尝试了上面的链接,它拥有一个简单的命令行条目,并且你正在参加比赛,但事实并非如此。

任何帮助将不胜感激。

+0

删除SET Batch命令中的空格:'set usrCode = 0' – Aacini 2014-10-27 21:37:06

+0

哈哈,你的评论最终帮助我完成了。我在下面的答案中尝试了一切,完全忘记了Batch变量规则。谢谢! – 2014-10-27 23:36:11

回答

3

这会工作;

echo SET @usrCode = '0'; > params.sql 
type params.sql caller.sql | mysql -u root dbname 
+1

真棒,感谢您的快速回复! :)只有我有问题,因为我想从这样的东西中学习。 type命令和调用mysql之间的“|”的功能是什么? – 2014-10-27 23:35:12

+0

这是一个管道,它将左侧(stdout)的打印数据发送到右侧(stdin)的输入流。 – harvey 2014-10-28 01:40:40

+0

现在我知道了。谢啦! – 2014-10-29 16:00:05

相关问题