bat脚本执行mysql命令导入sql文件到数据库

版权声明:本文为博主原创文章,如需转载请留言说明。 https://blog.csdn.net/womenrendeme/article/details/75799515

如果着急:请直接看本文标红部分和最后总结!


这是我的mysql路径:

下面是我的bat命令(x一句,刚接触博客,手残)

注意:此命令存在bat脚本中

C:\JiaFa\Setup\MySQL Server 5.5\bin\mysql.exe -h localhost -uroot -pjfkjyfb dajian < e:\c_bw_list.sql>>e:\dblog.txt 2>&1

给大家解释一下这句命令:

C:\JiaFa\Setup\MySQL Server 5.5\bin\mysql.exe这是我执行mysql命令的路径(即mysql安装目录下bin下的mysql.exe)

-h是ip地址

-u用户名,-p密码

后面的“dajian”是数据库名,

< e:\***.sql是sql文件的路径

>>e:\dblog.txt 2>&1这句是我在网上找的,一个论坛的大大写的,大大id忘了- -这句作用是将导入sql文件的日志输出到指定位置的txt里,我测试的结果就是,成功了没日志,失败了才有。


说这么多,直接说结果:

上面那句是错的233333~~

e:\dblog.txt中看到

“'C:\JiaFa\Setup\MySQL' 不是内部或外部命令,也不是可运行的程序

或批处理文件。”(这个其实就给了提示,我太笨了)

然后换了种方式,先进入bin目录,再执行命令

再看日志,依然报错:

'mysql.exe' 不是内部或外部命令,也不是可运行的程序

或批处理文件。

然后就百度查了查,大多数说是要指定环境变量,那就就试试吧

(下面的语句中sql文件路径有变动,怕小白看蒙了,大家不要在意,

再强调下:f:\zzztest\c_bw_list.sql是你的sql文件的路径

f:\zzztest\dblog.txt是 你放日志的路径

没卵用。

这里插一句:希望大家能注意到,同一个脚本,如果上面设置了环境变量,下面直接引用,是没用的。(或者说,刚设置了环境变量,就想在同一个bat里使用是无效的)

必须重新双击打开一个命令窗口才有效,即使是调用另一个bat文件也不行。

再换种说话:还是上面的这个bat脚本例子,如果把第三行放到另外一个sql.bat脚本里,先双击setx Path这个脚本,再双击sql.bat脚本,这样是可行的。但是你要是在setx Path这个脚本中使用start命令或者call调用sql.bat脚本,是不可行的。

(这是我这几天尝试的结果,也许是错误的结论,知道的大神请留言告我更改)

【中括号内容于2017-8-16 14:12:52更新:关于同一个配置环境变量后立即使用的方法详见这篇博文:http://blog.csdn.net/womenrendeme/article/details/77247255】


然后,又尝试了下,设置环境变量后重启mysql

setx Path "C:\JiaFa\Setup\MySQL Server 5.5\bin;%Path%"

net stop mysql

net start mysql

mysql -h localhost -uroot -pjfkjyfb dajian < f:\zzztest\c_bw_list.sql>>f:\zzztest\dblog.txt 2>&1

还是不行,索性礼拜六再改

然而就在昨晚半夜醒来尿尿,昏昏沉沉的想到,是不是路径有问题?

今天周六,虽然休息还是来了公司

一坐下我就啪啪啪...

*************WARNING************

ctrl+c保存,双击前先把那个dblog日志删掉

双击,发现bat窗口不像之前那样闪退了,而是停顿了一下

去看下数据库吧

bingo~~数据导入成功!


总结

就是因为C:\JiaFa\Setup\MySQL Server 5.5\bin\mysql.exe路径中含有空格,如果这个脚本只是调用一次使用,不需要配置环境变量,直接指定路径就好,但是mysql的安装路径中自带有空格。还可以修改mysql的安装文件夹MySQL Server 5.5为mysql。这只是我在我这里的问题,可能解决不了你的问题,但是注意多看日志or报错提示。百度错误也解决不了你的问题,就需要自己去解决了。

而我成功的多次避开了正确的路,文章只是简单说了下失败的几次,其实我尝试了不下50次,包括设置环境变量后,调用另一个bat的方法。(这个我现在也没搞明白).



以下代码可直接copy,更改为自己的路径。


::set str 是将含有空格的mysql路径放在str里


set str="C:\JiaFa\Setup\MySQL Server 5.5\bin\"


::%%两个百分号是引用上面的变量


%str%mysql.exe -h localhost -uroot -pjfkjyfb dajian < 
f:\zzztest\c_bw_list.sql>>f:\zzztest\dblog.txt 2>&1


::pause是暂停,可以看执行过程,成功了就pause删掉吧
pause



猜你喜欢

转载自blog.csdn.net/womenrendeme/article/details/75799515
今日推荐