Vous êtes nouveau sur Developpez.com ? Créez votre compte ou connectez-vous afin de pouvoir participer !

Vous devez avoir un compte Developpez.com et être connecté pour pouvoir participer aux discussions.

Vous n'avez pas encore de compte Developpez.com ? Créez-en un en quelques instants, c'est entièrement gratuit !

Si vous disposez déjà d'un compte et qu'il est bien activé, connectez-vous à l'aide du formulaire ci-dessous.

Identifiez-vous
Identifiant
Mot de passe
Mot de passe oublié ?
Créer un compte

L'inscription est gratuite et ne vous prendra que quelques instants !

Je m'inscris !

Comment gérer dans SSIS le mode d'alimentation Insert or Update
Par Elros

Le , par Elros

0PARTAGES

Bonjour,

Sur SSIS, il n'existe pas de composant prêt à l'emploi gérant l'alimentation en mode Insert or Update. Il existe plusieurs astuces pour régler ce problème dont celle que je vais présenter ci-dessous.

Voici un exemple de data flow gérant l'insertion ou la mise à jour de données.



Le lookup permet d'identifier les lignes présentes dans la cible et de les envoyer dans la branche "Match OutPut". Le cas échéant, elles sont envoyées en insertion dans la branche "No Macth OutPut".
Dans le lookup, nous jointons nos deux tables sur la clé primaire d'un véhicule (ici l'immatriculation du véhicule). Par la suite, nous récupérons l'ensemble des champs que l'on souhaiterait mettre à jour (Nom du loueur, nombre de km, etc.).

Dans le composant colonne dérivée (Checking for update), nous allons tester nos champs sources avec les champs récupérés dans le lookup. Ce qui nous donne ceci :



La formule est simple et permet de tester les valeurs NULL qui peuvent poser des problèmes.
La formule en question :
Code : Sélectionner tout
(ISNULL(LKP_Name) != ISNULL(SRC_Name)) || (!ISNULL(LKP_Name) && !ISNULL(SRC_Name) && LKP_Name != SRC_Name)
Cette formule nous permet de créer un booléen qui nous permettra avec le composant de fractionnement conditionnel de récupérer seulement les lignes à mettre à jour.
La formule ci-dessous sera insérée dans la sortie "AnyChange" et vérifiera si au moins un champ a évolué. Si c'est le cas, la ligne entière sera mise à jour :

Code : Sélectionner tout
Changed_NBKM || Changed_Name
Enfin, le composant OLE DB Commande permettra de mettre à jour nos lignes qui passeront la condition "AnyChange".
Il y'a trois paramétrages à effectuer :
- Choisir la connexion
- Mettre la commande SQL avec les paramètres (sur ssis les paramètres sont sous la forme d'un point d'interrogation) à la place des valeurs à mettre à jour
- Faire le mapping des paramètres avec les colonnes que l'on souhaite (la source Src voiture)



Voilà, maintenant vous êtes capable de gérer une méthode d'Insert or update. Il y'a évidemment d'autres méthodes pour gérer cette méthode d'alimentation.

Une erreur dans cette actualité ? Signalez-le nous !