Maison >base de données >tutoriel mysql >Comment interroger plusieurs bases de données dans SSIS sur la base des données récupérées ?

Comment interroger plusieurs bases de données dans SSIS sur la base des données récupérées ?

DDD
DDDoriginal
2024-12-20 15:51:09228parcourir

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

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 :

  • Dans la tâche d'exécution SQL, définissez ResultSet sur Single et Result Set sur User::MyVariableList.
  • Utilisez la commande SQL suivante :
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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn