从sql脚本调用SQL脚本!

时间:2010-01-25 16:23:45

标签: sql sql-server tsql

我只是想知道是否可以从单个startup.sql脚本调用多个SQL脚本。

StartUp.sql调用:

CreateDatabase.sql CreateStoreProcedureFirst.sql CreateStoreProcedureSecond.sql InsertDummyValues.sql otherscripts.sql ... etc

目前我正在一次加载和运行每个文件..我还运行了更多脚本,有时会错过脚本或以错误的顺序执行!

希望这有点意义

由于

5 个答案:

答案 0 :(得分:2)

是的 - 您可以使用SQLCMD(SQL Server 2005或更高版本)使T-SQL脚本更灵活,相当于包含和基本变量。

包含的SQLCMD命令是:r ,如下所示:

:r c:\someFolder\script1.sql
:r c:\someFolder\script2.sql

请参阅http://www.mssqltips.com/tip.asp?tip=1543

答案 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