Question

J'ai besoin d'aide pour déterminer un flux de travail et je ne sais pas comment s'y prendre. Supposons que je transforme (ETL?) les données du tableau A au tableau B. Le tableau A a une clé primaire composite A .a + A.b + Ac, alors que le tableau B ne contient qu'une colonne d’identité renseignée automatiquement. Comment mapper les clés composites de A vers les identités créées lors de l’insertion dans B?

De préférence, je souhaiterais ne pas avoir de colonne dans la table B associée à la clé composite de A car de nombreuses autres tables doivent subir la même opération mais ne possèdent pas la même structure de clé composite.

Était-ce utile?

La solution

Demandez-vous exactement pour quoi vous avez besoin des clés d'origine. La réponse peut varier en fonction du système source. Cela peut vous amener à maintenir un "système source". colonne et une "clé de source originale" colonne. Ce dernier peut nécessiter une liste délimitée par des virgules des clés d'origine.

Ou vous constaterez que vous n'avez jamais réellement besoin de cartographier, vous n'avez donc pas besoin de garder quoi que ce soit.

Autres conseils

Si je vous ai bien compris, vous ne pouvez pas relier les enregistrements de la table B aux enregistrements de la table A après la transformation, à moins de capturer le mappage entre la clé composite de A et l'identificateur de B pendant la transformation.

Vous pouvez ajouter une colonne à A et pré-calculer les identifiants à utiliser lors de l'insertion dans B. Ensuite, vous disposez d'un mappage. Cela pourrait également être fait en utilisant une table de mappage séparée, si vous ne voulez pas ajouter de colonne à A.

Si vous ne souhaitez pas remplacer l’attribution d’identifiants par défaut, vous devrez les capturer lors du chargement. Oracle fournit la clause retournant pour insérer en PL / SQL à cette fin. Je ne suis pas sûr de SQL Server. Il est également possible de réaliser cela en utilisant un déclencheur sur B pour l'insérer dans une table de mappage séparée ou pour mettre à jour une colonne en A. Bien que cela puisse ralentir considérablement votre charge.

Si rien d'autre, vous pouvez créer des colonnes supplémentaires dans B pour contenir les clés de A pendant le chargement, interroger ensuite les mappages dans une table séparée, puis supprimer les colonnes supplémentaires.

J'espère que cela aide.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top