靈活運用SQL Server2008 SSIS變量


在SSIS開發ETL(Extract-Transform-Load),數據抽取、轉換、裝載的過程。我們需要自己定義變量

一、SSIS變量簡介

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

   在各種編程語言中申明的變量一般情況下都會有作用范圍的,SSIS變量也不例外,SSIS變量也是有作用范圍的。根據作用范圍分類,變量分為包變量和組件變量。包變量在包任何一個組件中都可以調用,組件變量只能夠在聲明變量的組件中有效。在變量的窗口中可以看到變量的作用域。

可以看到i變量的作用域是整個Package1包,而myconfig變量作用域是數據流任務組件。

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

1、申明變量

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

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

2、賦值

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

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

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

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

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

3、變量的使用

變量在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后賦值給另外一個變量。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM