根據檢索到的資料查詢多個資料庫
在SSIS中,經常需要從一個資料庫檢索資料並使用該資料進行查詢另一個資料庫。這可以透過多種方法來實現:
方法1:尋找轉換
尋找轉換可讓您從第二個資料庫擷取資料並將其新增至資料流中。但是,它本質上不會根據檢索到的資料過濾行。
若要使用查找轉換過濾行,請在查找過程中處理錯誤。您可以將錯誤處理設定為忽略行,並使用條件拆分來刪除新增列中具有空值的行。或者,您可以將錯誤處理設定為重定向行,將所有行路由到錯誤輸出行,然後可以對其進行過濾。
方法2:腳本任務
對於更具選擇性的資料檢索,請考慮使用腳本任務:
' Get the list of IDs from the first database Dim lst As New Collections.Generic.List(Of String) Dim myADONETConnection As SqlClient.SqlConnection = _ DirectCast(Dts.Connections("TestAdo").AcquireConnection(Dts.Transaction), _ SqlClient.SqlConnection) myADONETConnection.Open() Dim myADONETCommand As New SqlClient.SqlCommand("Select [ID] FROM dbo.MyTable", myADONETConnection) Dim dr As SqlClient.SqlDataReader dr = myADONETCommand.ExecuteReader While dr.Read lst.Add(dr(0).ToString) End While ' Construct the query for the second database Dts.Variables.Item("User::MyVariableList").Value = "SELECT ... FROM ... WHERE ID IN(" & String.Join(",", lst) & ")"
將「User ::MyVariableList」變數分配為
方法三:執行SQL任務
另一種方法是執行SQL 任務:
DECLARE @str AS VARCHAR(4000) SET @str = '' SELECT @str = @str + CAST([ID] AS VARCHAR(255)) + ',' FROM dbo.MyTable SET @str = 'SELECT * FROM MySecondDB WHERE ID IN (' + SUBSTRING(@str,1,LEN(@str) - 1) + ')' SELECT @str
這會產生一個 SQL 查詢,其中在 IN 子句中包含檢索到的 ID。將輸出指派給 User::MyVariableList 變量,並將其用作 OLEDB 來源,以便從第二個資料庫檢索資料。
以上是如何根據檢索到的資料在SSIS中查詢多個資料庫?的詳細內容。更多資訊請關注PHP中文網其他相關文章!