靈活運用SQL Server2008 SSIS變數

2022-06-08 01:39:08 字數 4183 閱讀 9410

在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後賦值給另外乙個變數。

在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後賦值給另外乙個變數。

靈活運用PHP stdClass

轉 一維陣列,我現在特別喜歡把它寫成物件,因為鍵盤打起來比較順手,看起來也順眼,如 andy array andy a 1 andy b 2 andy c 3 我喜歡把它變成這樣 andy array andy object andy andy a 1 andy b 2 andy c 3 新建空陣列...

js 「 」 「 」的靈活運用

如果 左側表示式的值為真值,則返回右側表示式的值 否則返回左側表示式的值。js var i 真值 i i 真值 其他真值 i 其他真值 i 真值 i 如果 左側表示式的值為真值,則返回左側表示式的值 否則返回右側表示式的值。js var i 真值 i 真值 i 真值 其他真值 i 真值 i 真值 i...

靈活運用建構函式

示例 public class activityutils 得到activityutils的物件 public static activityutils getinstance return instance 管理activity的棧 public void add activity activit...