Remplacer la valeur 0000000 par la valeur null par SSIS
ethan_decoster
Messages postés38Date d'inscriptionmardi 31 janvier 2006StatutMembreDernière intervention 4 avril 2008
-
4 oct. 2007 à 15:26
Tenerezu
Messages postés4Date d'inscriptionjeudi 16 septembre 2004StatutMembreDernière intervention22 août 2010
-
5 juin 2009 à 12:31
Bonjour,
Je travaille avec SQL Server 2005 et SSIS pour importer des données de fichiers CSV. J'utilise un shéma de base de données avec un champs AZERTY clé étrangère qui se trouve dans une table X qui est clé primaire dans une table Y. Dans la table X j'ai des valeurs pour le champs AZERTY qui sont égale à "0000000" qui ne se retrouve pas dans la table Y. Comment dire par SSIS que les valeurs "0000000" de la table X sont des valeurs égales à null dans Y. AZERTY est de type DT_STR de 7 caractère avec la codepage 1252.
J'utilise un Derived Column pour regarder la valeur de AZERTY dans x et j'entre une expression qui est AZERTY=="0000000"?NULL(DT_STR,7,1252):AZERTY.
hymnuade
Messages postés39Date d'inscriptionmardi 21 décembre 2004StatutMembreDernière intervention15 février 2010 12 nov. 2008 à 20:45
Si tu s une contrainte de clé externe, cad FK dans X doit exister en tant que PK dans Y, tu peux utiliser la tâche Lookup. elle te permettra de lister les PK de Y et de filtrer ton dataset contenant les FK de X.
Sinon, une PK = à NULL, c'est plutôt impossible non ?
Tenerezu
Messages postés4Date d'inscriptionjeudi 16 septembre 2004StatutMembreDernière intervention22 août 2010 5 juin 2009 à 12:31
En fait il te suffit de rajouter une colonne dérivée juste avant ta colonne dérivée qui calcule ton expression : AZERTY=="0000000"?NULL(DT_STR,7,1252):AZERTY
Dans cette nouvelle colonne dérivée tu crée un champ : AZERTY_NULL avec l'expression NULL(DT_STR,7,1252)
Puis tu remplaces l'expression de ta colonne dérivée précédente par :
AZERTY=="0000000"?AZERTY_NULL:AZERTY