如何在批处理执行多个SQL 脚本
1个回答
展开全部
方法1
若有SQL脚本a.sql, b.sql, 其目录在f盘根目录下, 则可再写一个SQL脚本c.sql(假设其目录也在f盘根目录下, 也可以在其他路径下)如下:
source f:/a.sql; source f:/b.sql;
然后执行source f:/c.sql 即可.
方法2
方法1的不便之处在于, 要为每个脚本写一句代码, 若有成千上万个, 这样写便不现实. 此时, 可用批处理来实现.
以执行f:\test\目录下所有的SQL脚本为例, 其批处理代码如下:
@echo offfor %%i in (f:\test\*.sql) do ( echo excute %%i mysql -uroot -p123456 < %%i)echo successpause
其中: do后面的左括号要跟在do后, 若放在do的下一行, 则出会出现一闪而过的情况, 数据库脚本有没有执行没有去查看.
若是当前目录下, 可将"f:\test\*.sql" 改为".\*.sql" 即可.
注意在SQL脚本中写上 use db_name.
若有SQL脚本a.sql, b.sql, 其目录在f盘根目录下, 则可再写一个SQL脚本c.sql(假设其目录也在f盘根目录下, 也可以在其他路径下)如下:
source f:/a.sql; source f:/b.sql;
然后执行source f:/c.sql 即可.
方法2
方法1的不便之处在于, 要为每个脚本写一句代码, 若有成千上万个, 这样写便不现实. 此时, 可用批处理来实现.
以执行f:\test\目录下所有的SQL脚本为例, 其批处理代码如下:
@echo offfor %%i in (f:\test\*.sql) do ( echo excute %%i mysql -uroot -p123456 < %%i)echo successpause
其中: do后面的左括号要跟在do后, 若放在do的下一行, 则出会出现一闪而过的情况, 数据库脚本有没有执行没有去查看.
若是当前目录下, 可将"f:\test\*.sql" 改为".\*.sql" 即可.
注意在SQL脚本中写上 use db_name.
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询