我的d:\sp_bak目录下有10000多个*.SQL文件
想通过批处理执行
如果用下面两个其中一个代码,则系统只会执行第一个SQL文件,然后就停下来
@echo off
for /r d:\sp_bak %%i in (*.sql) do sqlplus scott/tiger@db_shop @%%i
pause
或
@echo off
for /r d:\sp_bak %%i in (*.sql) do cmd.exe /c sqlplus scott/tiger@db_shop @%%i
pause
如果用这个代码,则系统会弹出N多个CMD窗口,直到把系统卡死(如果*.sql文件少,则可用这个方法)
@echo off
for /r d:\sp_bak %%i in (*.sql) do start cmd.exe /c sqlplus scott/tiger@db_shop @%%i
pause
求CMD脚本代码,一次性全部执行这些*.sql文件
不要使用cmd依次调用.sql文件,这样相当于调用了N个cmd.exe。
一次执行方法如下:
1 写一个公共的global.sql文件,内容如下:
2 用cmd调用这个公共sql即可。
当然,这里面的公共文件名不好办,文件太多了,不好写,下面给一个简单的办法:
可以使用DOS命令来获得所有文件名.
dir . >> sqlfile.txt
然后编辑SQLFILE.TXT文件,去掉无关信息,在文件名前加上@,并把SQLFILE.TXT改名为SQLFILE.SQL就可以了.这样执行@SQLFILE.SQL就相当于批处理文件了
一次执行方法如下:
1 写一个公共的global.sql文件,内容如下:
- @d:\sp_bak\1.sql
- @d:\sp_bak\2.sql
- ...
@d:\sp_bak\1.sql
@d:\sp_bak\2.sql
...
2 用cmd调用这个公共sql即可。
当然,这里面的公共文件名不好办,文件太多了,不好写,下面给一个简单的办法:
可以使用DOS命令来获得所有文件名.
dir . >> sqlfile.txt
然后编辑SQLFILE.TXT文件,去掉无关信息,在文件名前加上@,并把SQLFILE.TXT改名为SQLFILE.SQL就可以了.这样执行@SQLFILE.SQL就相当于批处理文件了