在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=https://www.cnblogs.com/shuihaya/p/值
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 = https://www.cnblogs.com/shuihaya/p/1方式賦值給變數,也可以通過這種方式來使用變數,比如Dts.Variables("other_variable").Value = https://www.cnblogs.com/shuihaya/p/Dts.Variables("i").Value+1,這個陳述句是可以在腳本組件中執行的,將i變數加1后賦值給另外一個變數,
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/14993.html
標籤:SQL Server
上一篇:能否徒勞地嘗試一下,呼叫Windows API,讓標準Treeview控制元件,正確顯示Unicode字符,而不是????
下一篇:Flask-Script
