靈活運用SQL Server2008 SSIS變量

 

 

在SSIS開發ETL(Extract-Transform-Load),數據抽取、轉換、裝載的過程。咱們須要本身定義變量數據庫

1、SSIS變量簡介編程

SSIS(SQL Server Integration Services,SQL Server整合服務)變量分分爲兩種,一種是系統變量,一種用戶定義的變量。系統變量包括有關包、容器、任務或事件處理程序的很是有用的信息。例如,在運行時,MachineName系統變量包含運行包含的計算機的名稱,StartTime變量包開始運行的時間。系統變量是隻讀的。在SSIS中,用戶變量是用戶在開發的過程當中根據須要申明的變量。用戶變量可使用在腳本中,在由優先約束、For循環容器、派生列轉換和條件性拆分轉換使用的表達式中,以及在更新屬性值的屬性表達式中。編程語言

   在各類編程語言中申明的變量通常狀況下都會有做用範圍的,SSIS變量也不例外,SSIS變量也是有做用範圍的。根據做用範圍分類,變量分爲包變量和組件變量。包變量在包任何一個組件中均可以調用,組件變量只可以在聲明變量的組件中有效。在變量的窗口中能夠看到變量的做用域。post

能夠看到i變量的做用域是整個Package1包,而myconfig變量做用域是數據流任務組件。code

2、SSIS用戶變量的聲明、賦值、使用orm

一、申明變量blog

     申明變量是很是簡單、若是你要申明包變量,只要單擊控制流選項卡,而後在包開發區域空白處單擊右鍵選擇變量命令,或者新建變量按鈕就新建一個變量,輸入名稱,選擇數據類型,賦初值就完成了。事件

若是要聲明某數據流任務組件使用的變量,只要雙擊該數據流任務組件,在流控制控制選項卡空白的地方單擊右鍵選擇變量命名,在變量窗口中新建一個變量命令,在變量窗口中新建一個變量,這時變量的做用域就是你選擇的流任務組件。作用域

二、賦值開發

   在實際開發中,除了在變量聲明的時候給變量賦值外,還有兩種方式,一種是經過執行SQL任務組件返回值的方式給變量賦值,一種是經過腳本組件來給變量賦值。

在執行SQL任務組件方法是先設置好組件的數據庫鏈接屬性,而後輸入從數據庫取數據的SQL語句,設置組件返回的結果集爲單行。在結果集界面中單擊「新建」,在結果集那一列輸入你剛纔SQL返回列的名稱,在變量名稱列選擇你要賦值的變量

圖中紅色方框中的SQL語句很是簡單,返回單行,結果是1。在圖4中,將返回的result列的一行賦值給用戶變量i。

利用腳本組件賦值變量比較簡單,只須要設置腳本組件的ReadOnlyvariable或者ReadWriteVariable,將變量的名稱設置他們的值(多個變量以逗號分割),它們的區別是前者在腳本組件只可以讀,或者能夠讀寫。而後在腳本組件中經過

Dts.Varables("變量名稱").Value=值

三、變量的使用

變量在ssis中使用的地方不少,筆者介紹兩個典型的應用。

  (1) 執行 SQL 任務組件的參數

  假定申明瞭一個日期類型變量StartDate,用戶須要經過從某個表中選擇在StartDate日期以前的數據,這個時候須要將StartDate做爲參數傳給執行 SQL 任務組件。在執行 SQL 任務組件輸入SQL的地方輸入以下命令語句:

SELECT * FROM TABLE_a WHERE 日期字段 < ?

  而後在參數據映射界面新增映射,在變量名稱列選擇用戶變量StartDate,選擇類型爲DATE,在參數名稱列輸入給參數取的名稱。這樣就能夠將StartDate變量傳給SQL任務組件的SQL語句了。

  (2) 在腳本組件中賦值

  能夠在腳本組件中經過Dts.Variables("i").Value = 1方式賦值給變量,也能夠經過這種方式來使用變量。好比Dts.Variables("other_variable").Value = Dts.Variables("i").Value+1,這個語句是能夠在腳本組件中執行的,將i變量加1後賦值給另一個變量。

相關文章
相關標籤/搜索