Heim >Datenbank >MySQL-Tutorial >Wie frage ich mehrere Datenbanken in SSIS basierend auf abgerufenen Daten ab?

Wie frage ich mehrere Datenbanken in SSIS basierend auf abgerufenen Daten ab?

DDD
DDDOriginal
2024-12-20 15:51:09262Durchsuche

How to Query Multiple Databases in SSIS Based on Retrieved Data?

Abfragen mehrerer Datenbanken basierend auf abgerufenen Daten

In SSIS ist es häufig erforderlich, Daten aus einer Datenbank abzurufen und diese Daten zur Abfrage zu verwenden eine andere Datenbank. Dies kann durch mehrere Methoden erreicht werden:

Methode 1: Lookup-Transformation

Mit der Lookup-Transformation können Sie Daten aus einer zweiten Datenbank abrufen und dem Datenstrom hinzufügen . Allerdings werden Zeilen nicht grundsätzlich auf Grundlage der abgerufenen Daten gefiltert.

Um Zeilen mithilfe der Lookup-Transformation zu filtern, behandeln Sie Fehler während des Lookup-Vorgangs. Sie können die Fehlerbehandlung auf „Zeile ignorieren“ einstellen und eine bedingte Aufteilung verwenden, um Zeilen mit Nullwerten in den hinzugefügten Spalten zu entfernen. Alternativ können Sie die Fehlerbehandlung auf „Zeile umleiten“ einstellen, um alle Zeilen an die Fehlerausgabezeile weiterzuleiten, die dann gefiltert werden kann.

Methode 2: Skriptaufgabe

Für Für einen selektiveren Datenabruf sollten Sie die Verwendung einer Skriptaufgabe in Betracht ziehen:

' 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) & ")"

Weisen Sie „User::MyVariableList“ zu. Variable als Quelle für den nachfolgenden Datenabruf.

Methode 3: SQL-Task ausführen

Ein anderer Ansatz ist der SQL-Task ausführen:

  • Setzen Sie im Task „SQL ausführen“ ResultSet auf Single und Result Set auf Benutzer::MyVariableList.
  • Verwenden Sie den folgenden SQL-Befehl:
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

Dadurch wird eine SQL-Abfrage generiert, die die abgerufenen IDs in einer IN-Klausel enthält. Weisen Sie die Ausgabe der Variable User::MyVariableList zu und verwenden Sie sie als OLEDB-Quelle für den Datenabruf aus der zweiten Datenbank.

Das obige ist der detaillierte Inhalt vonWie frage ich mehrere Datenbanken in SSIS basierend auf abgerufenen Daten ab?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn