我只是想知道是否可以从单个startup.sql脚本调用多个SQL脚本。
即
StartUp.sql调用:
CreateDatabase.sql CreateStoreProcedureFirst.sql CreateStoreProcedureSecond.sql InsertDummyValues.sql otherscripts.sql ... etc
目前我正在一次加载和运行每个文件..我还运行了更多脚本,有时会错过脚本或以错误的顺序执行!
希望这有点意义
由于
答案 0 :(得分:2)
是的 - 您可以使用SQLCMD(SQL Server 2005或更高版本)使T-SQL脚本更灵活,相当于包含和基本变量。
包含的SQLCMD命令是:r ,如下所示:
:r c:\someFolder\script1.sql
:r c:\someFolder\script2.sql
等
答案 1 :(得分:1)
答案 2 :(得分:0)
Oracle和MySQL都有命令行工具,根据我的经验,你可以运行它们
mysql database_name < yoursql.sql > output.tab
但是这意味着从CLI运行而不是从原始SQL语句运行,因此可能不是您要查找的内容。我不相信你可以从MySQL调用系统
答案 3 :(得分:0)
mcintyre321的链接看起来很方便......
我使用powershell做类似的事情。我将所有设置脚本命名为前缀和1.x,无论它们需要编译的顺序如何。
然后我以正确的顺序命名了所有我的拆卸脚本3.x.
cmd窗口中的命令:
PS builddir:\> .\buildsql.ps1 -currentbuilddir "C:\Documents and Settings\SGreene\My Documents\svn\Ticketing" -buildfile "sqlbuild.sql" -teardownfile
"teardown.sql"
powershell脚本(buildsql.ps1)
param($currentbuilddir,$buildfile1,$teardownfile)
new-psdrive -name builddir -PSProvider filesystem -Root (resolve-path $currentbuilddir)
cd builddir:
rm $buildfile1
rm $teardownfile
Get-item COM_ENCRYPT_1* | ForEAch-object {cat $_ >> $buildfile1; "GO --SYSTEM INSERTED GO--------------" >> $buildfile1}
Get-item COM_ENCRYPT_3* | ForEAch-object {cat $_ >> $teardownfile; "GO --SYSTEM INSERTED GO------------" >> $teardownfile}
我第一次这样做,但似乎工作正常。
答案 4 :(得分:0)
您是否使用或听说过动态sql?我就是这样做的......
DECLARE @ SQL1PROCEDURE nvarchar(4000) DECLARE @ SQL2PROCEDURE nvarchar(4000)
SET @ SQL1Procedure = 'CREATE PROC sp1 如 开始 等等等等等等 结束 “
SET @ SQL2Procedure = 'INSERT DUMMY TABLE(FIELD1,FIELD2)VALUES(VALUE 1,VALUE2)'
EXEC @ SQL1Procedure EXEC @ SQL2Procedure