2017-07-25 47 views
0

我有我的Git通過/藏匿管理70個SQL查詢。爲了促進這一點,我已經將每個查詢拆分爲一個單獨的SQL文件。在分割之前,代碼的工作方式是將第一個查詢的所有變量聲明爲整體並將其全部運行。所有這些查詢總共約10k行。我可以使用一個可執行腳本運行多個(70)SQL文件嗎?

我想寫一個腳本(願意學習),這將允許我連接到正確的數據庫,聲明一些通用變量,然後使用聲明的變量調用文件夾中的所有不同文件。

我最初的想法是使用R和RODBC包,但要確保我在繼續之前在正確的道路上。這是可能的,我應該改進我的方法嗎?

+1

您可以輕鬆地遍歷與R上的文件,和我使用RODBC包始終創建和加載來自SQL數據庫的數據,所以我想答案是肯定的。 – Florian

+0

當然可以,和R不需要 - 我猜你挑[R,因爲這是你知道的語言。就個人而言,我會使用PowerShell,因爲它已經在Windows上,所以我不會添加額外的依賴關係。但是爲您提供工作腳本超出了Stack Exchange的範圍/意圖。 – alroc

回答

0

您可以運行SQLCMD模式的腳本(SSMS中,你可以從查詢/ 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

相關問題