Voici une petite astuce afin de réaliser des UPSERTS avec SSIS. Un UPSERT consiste à mettre à jour une donnée si elle existe dans la table, ou le cas échéant, à l’insérer (update or insert). Une méthode simple et efficace consiste à utiliser le composant ‘Look up’. La fonction de ce composant consiste de rechercher tous les enregistrements d’une data source présent dans une table. En sortie de ce composant, on retrouve tous les enregistrements qui ont matcher avec la source (ce qui va ensuite nous permettre de mettre à jour les données). En sortie d’erreur on retrouve donc tous ceux qui n’existent pas (ce qui va donc nous permettre de les insérer)
Dans mon exemple, je cherche à faire un upsert de ma table ‘SITE’, voici le résultat final obtenu :
Configuration du composant ‘Look up’ :
Pour configurer ce composant, faites un clique droit, Modifier. Sélectionnez alors la base Ole Db de votre choix, et indiquez votre requête de sélection comme ci-dessous :
Puis faites mapper votre requête de sélection avec votre source.
En sortie, vous pouvez utiliser plusieurs composant, personnellement, j’utilise une ‘OLE Db Command’ qui me permet de faire une requête d’insertion paramétrée. Après une clique droit, ‘Modifier’, l’éditeur de propriété s’ouvre et vous pouvez spécifier votre requête d’insertion. Les « ? » correspondent aux différents paramètres (comme @param en sql).
Il faut ensuite mapper les colonnes de votre source avec les différents paramètres :
A ce stade la mise à jour des données s’effectue. Passons donc à l’insertion des nouveaux enregistrements. Pour cela il faut retourner sur le composant ‘Look up’, et après un clique droit ‘Modifier’, cliquer sur ‘Configurer l’affichage des erreurs’, et dans la colonne Erreurs, sélectionner ‘Réacheminer la ligne’
Insérer ensuite une destination OLE Db, et mapper les lignes d’erreur vers la table ou vous souhaitez insérer vos nouveau enregistrements.On a bien mis à jour les données existantes, et insérer les données qui n’existait pas : Facile l’UPSERT avec SSIS !!