검색된 데이터를 기반으로 여러 데이터베이스 쿼리
SSIS에서는 하나의 데이터베이스에서 데이터를 검색하고 해당 데이터를 사용하여 쿼리해야 하는 경우가 많습니다. 다른 데이터베이스. 이는 여러 가지 방법을 통해 달성할 수 있습니다.
방법 1: 조회 변환
조회 변환을 사용하면 두 번째 데이터베이스에서 데이터를 검색하여 데이터 스트림에 추가할 수 있습니다. . 그러나 본질적으로 검색된 데이터를 기반으로 행을 필터링하지는 않습니다.
조회 변환을 사용하여 행을 필터링하려면 조회 프로세스 중 오류를 처리하세요. 오류 처리를 행 무시로 설정하고 조건부 분할을 사용하여 추가된 열에서 Null 값이 있는 행을 제거할 수 있습니다. 또는 오류 처리를 행 리디렉션으로 설정하여 모든 행을 오류 출력 줄로 라우팅한 다음 필터링할 수 있습니다.
방법 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" 변수를 후속 데이터 검색의 소스로 사용합니다.
방법 3: 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
이것은 IN 절에서 검색된 ID를 포함하는 SQL 쿼리를 생성합니다. 출력을 User::MyVariableList 변수에 할당하고 이를 두 번째 데이터베이스에서 데이터 검색을 위한 OLEDB 소스로 사용합니다.
위 내용은 검색된 데이터를 기반으로 SSIS에서 여러 데이터베이스를 쿼리하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!