Remplacer la valeur 0000000 par la valeur null par SSIS

Signaler
Messages postés
38
Date d'inscription
mardi 31 janvier 2006
Statut
Membre
Dernière intervention
4 avril 2008
-
Messages postés
4
Date d'inscription
jeudi 16 septembre 2004
Statut
Membre
Dernière intervention
22 août 2010
-
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.

Mais j'ai une erreur de syntaxe !!!

Quelqu'un peut m'aider ?

2 réponses

Messages postés
39
Date d'inscription
mardi 21 décembre 2004
Statut
Membre
Dernière intervention
15 février 2010

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 ?
Messages postés
4
Date d'inscription
jeudi 16 septembre 2004
Statut
Membre
Dernière intervention
22 août 2010

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

J'ai fait l'essai, ça devrait marcher.