[英]Need help to write bat file that execute sql scripts in (sql server 2008 and another 3 files.?
我确定这些之前已被问到但是找不到明确说明如何创建批处理文件让我们称之为“更新数据库”这个批处理文件应该
执行位于不同文件夹中的sql脚本执行另外3个bat文件。
任何快速的例子如何做?从来没有做过感谢很多
我可以这样做吗?
:On Error exit
:r C:\myPath\MasterUpdateDatabase.bat
GO
SQLCMD -S (Local) -i C:\myPath\InsertUsername.sql
我收到一个错误:
“GO”不被视为内部外部命令
感谢您的任何意见
看起来您正在尝试使用DOS命令创建批处理文件,该文件可以(a)执行其他批处理文件,或者(b)执行SQLCMD以运行sql或sql脚本。
以下是几个例子。 我正在使用带有/WAIT
开关的DOS命令START
,这将使您的原始“主”批处理文件在一个窗口中运行,并在新窗口中执行后续文件或命令。 该新窗口保持打开状态,直到脚本完成并退出。
有些ECHO
可能不是必需的,但脚本现在会回复给你一点点。
@echo off
因此,从您运行脚本的角度来看,这非常简单。 如果你的script1.bat有断点,你可以将错误返回给主脚本并立即结束。 我不清楚这是否是你需要主脚本做的。
echo Starting Database Update.
echo.
echo Excuting Script 1
echo.
start /wait C:\path\to\your\script1.bat
echo If there was a problem, break here.
Pause
echo Excuting Script 2
echo.
start /wait C:\path\to\your\script2.bat
echo If there was a problem, break here.
Pause
这里使用相同的START / WAIT来运行SQLCMD,在这种情况下只返回查询的结果。 这里需要注意的一点是-Q
(大写)运行查询并退出。 如果使用-q
(小写),它将运行查询并在SQLCMD中打开,等待另一个查询。
echo.
echo Running SQLCMD: "select top 100 * from sys.objects"
start /wait sqlcmd -S (local) -Q "select top 100 * from sys.objects"
这就是你如何运行一个sql脚本,这是-i
表示的,但我也没有像之前那样在START / WAIT中运行它。 不是你必须这样做,但我想展示这两个例子。 这也表明如果脚本返回错误, -b
将结束批处理过程,如果您运行的多个脚本取决于前者的成功,这将非常有用。
echo.
echo Running SQLCMD from an (-i)nput file:
sqlcmd -S (local) -i C:\path\to\your\script.sql -b
echo.
echo Update Complete.
pause
End
所以,我假设您正在寻找使用SQLCMD的.bat或.cmd文件。 我提供的示例非常基本,但希望它能让您走上正确的道路。
哦! 请记住,CTRL + C会破坏正在处理的批处理脚本。
您看到的实际错误是命令行解释器无法识别“GO”,因此您可以删除该行。
希望这可以帮助你:
sqlplus UserName/Password@DataBase @C:\myPath\InsertUsername.sql
PS:别忘了添加命令“commit;” 在sql文件(InsertUsername.sql)的末尾,此命令命令Oracle保存在darabase中执行的更改
这个答案肯定适用于您的目的:
sqlcmd -S localhost -U fdmsusr -P fdmsamho -i "E:\\brantst\\BranchAtt.sql" -o "E:\\brantst\\branchlog.txt"
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.