2017-08-10 5 views
0

Voici un exemple pour mieux expliquer mon scénario. Ma table de base de données a colonnes suivantes colonne -1: Operating_ID (ce qui est la clé primaire) Colonne -2: Nom Colonne -3: Téléphone Colonne -4: Adresse colonne -5: Date de début colonne -6: Fin DateSSIS- Mettre à jour quelques colonnes d'une ligne pour lesquelles la clé primaire existe déjà

les valeurs pour les colonnes 1,2,3,4 proviennent d'un extrait et cet extrait est poussé à la base de données à l'aide des tâches quotidiennes de flux de données SSIS

les valeurs pour les colonnes 5 et 6 sont faciles à utiliser introduits à partir d'une application Web et enregistré dans la base de données.

Maintenant dans le processus SSIS au lieu de lancer violation de l'erreur de clé primaire, j'ai besoin de mettre à jour les colonnes 2,3,4 si la clé primaire dans la colonne 1 existe déjà. D'abord j'ai considéré remplacer mais cela supprime les colonnes de données entrées par l'utilisateur 4,5. Je voudrais conserver les données dans les colonnes 4,5 et mettre à jour les colonnes 2,3,4 quand la colonne 1 existe déjà.

Répondre

1

Faire un RECHERCHE pour Operating_ID. Modifier cette recherche de « échouez sur INTROUVABLE » à « redirect RANGS POUR AUCUN MATCH »

Si correspondance ne se trouve pas, aller à INSERT

Si correspondance trouvée, allez à UPDATE. Vous pouvez exécuter des commandes OLAP pour mettre à jour, mais si c'est un grand ensemble de données, vous feriez mieux de mettre dans une table, et de faire UPDATE with a JOIN

0

Ceci est ce que je ferais. Je mettrais toutes les données dans une table de mise en scène. Ensuite, j'utiliserais un flux de données pour insérer les nouveaux enregistrements et la source de ce flux de données serait la table de transfert avec une clause not exists référençant la table prod. Ensuite, j'utiliserais une tâche Execute SQL dans le flux de contrôle pour mettre à jour les données pour les lignes existantes.