Interrogation de plusieurs bases de données basées sur les données récupérées
Dans SSIS, il est souvent nécessaire de récupérer les données d'une base de données et d'utiliser ces données pour interroger une autre base de données. Ceci peut être réalisé grâce à plusieurs méthodes :
Méthode 1 : Transformation de recherche
La transformation de recherche vous permet de récupérer des données d'une deuxième base de données et de les ajouter au flux de données. . Cependant, il ne filtre pas automatiquement les lignes en fonction des données récupérées.
Pour filtrer les lignes à l'aide de la transformation Recherche, gérez les erreurs pendant le processus de recherche. Vous pouvez définir la gestion des erreurs sur Ignorer la ligne et utiliser une division conditionnelle pour supprimer les lignes avec des valeurs nulles dans les colonnes ajoutées. Vous pouvez également définir la gestion des erreurs sur Redirect Row pour acheminer toutes les lignes vers la ligne de sortie d'erreur, qui peut ensuite être filtrée.
Méthode 2 : tâche de script
Pour Pour une récupération de données plus sélective, envisagez d'utiliser une tâche de script :
' 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) & ")"
Attribuez le Variable "User::MyVariableList" comme source pour la récupération de données ultérieure.
Méthode 3 : Exécuter la tâche SQL
Une autre approche est l'exécution de la tâche 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
Cela génère une requête SQL qui inclut les ID récupérés dans une clause IN. Attribuez la sortie à la variable User::MyVariableList et utilisez-la comme source OLEDB pour la récupération des données de la deuxième base de données.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!