我可以使用一个可执行脚本运行多个(70)SQL文件吗?

时间:2017-07-25 04:30:45

标签: sql r ssms

我通过Git / Stash管理了70个SQL查询。为了实现这一点,我将每个查询拆分为单个SQL文件。在拆分之前,代码通过使用第一个查询声明所有变量并作为一个整体运行它们来工作。这些查询总共大约有10k行。

我想写一个脚本(愿意学习),它允许我连接到正确的数据库,声明一些通用变量,然后使用声明的变量调用文件夹中的所有不同文件。

我最初的想法是使用R和RODBC软件包,但是在继续之前要确保我在正确的道路上。这是可能的,我应该改进我的方法吗?

1 个答案:

答案 0 :(得分:0)

您可以在SQLCMD模式下运行脚本(在SSMS中,您可以从Query / SQLCMD模式启用它)。

主脚本定义全局变量@msg并运行与其共享变量的其他脚本:

:setvar path   "F:\scripts"

:on error exit

SET XACT_ABORT ON

declare @msg nvarchar(100) = 'This is a global variable defined in the main script.'

:r $(path)/"script_1.sql"
:r $(path)/"script_2.sql"

这两个脚本文件包含使用全局变量@msg的简单select语句。

script_1.sql:

select @msg + ' And this comes from script_1.sql' as RESULTS_FROM_SCRIPT_1

script_2.sql:

select @msg + ' And this comes from script_2.sql' as RESULTS_FROM_SCRIPT_2    

结果如下:

enter image description here