2017-04-19 6 views
2

Good Day Tous,SSIS condition de coupure en fonction de la valeur de la colonne

J'ai une requête de sélection où je tire les données de sql-à-dire

select invno , date_received from sales 

Ce que je veux faire est de diviser le fichier en plusieurs fichiers utilisant la division conditionnelle. Je ne sais pas comment définir la condition que j'ai essayé comme ci-dessous enter image description here

Mais il crée un seul fichier, comment puis-je créer plusieurs fichiers basés sur la valeur de la colonne si je ne sais pas quelle est la valeur de la colonne serait être?

Je voudrais également affecter la valeur de la colonne c.-à-INVNO au nom de fichier et pour éviter d'écraser des fichiers

+2

Quelle est la condition que vous essayez de diviser? – Yahfoufi

+0

Compte tenu de votre requête source fournie, pour chaque 'invno' vous souhaitez créer un fichier de sortie avec les" autres données "' date_received' etc, oui? – billinkc

+0

Oui ce n'est pas une requête complète juste un échantillon donc invno 1234 crée un fichier, invno 1235 crée un fichier séparé etc, je ne sais pas combien de différents invno il y aura –

Répondre

2

Utilisation du hors de la boîte componentry, votre meilleur pari serait d'avoir quelque chose comme ça

La tâche d'exécution SQL renvoie un ensemble de résultats complets à une variable SSIS de type Object.

enter image description here

Votre requête générerait l'ensemble distinct de INVNO. Le Foreach Loop Container va ensuite "détruire" ce jeu d'enregistrements en une instance unique de notre INVNO. Cela nécessite que vous ayez une variable, probablement de type String, pour recevoir ce nombre.

La tâche de flux de données aura pour requête source une requête paramétrée. Supposons que le gestionnaire de connexion OLE DB soit select INVNO, date_received FROM dbo.Sales AS S WHERE S.INVNO = ?;, puis que vous mappez dans la valeur actuelle de INVNO (affectée au déchiffrement du FELC)

Enfin, le gestionnaire de connexion au fichier plat aura une expression sur le ConnectionString propriété qui prend en compte le chemin d'accès complet au fichier de sortie. Cela peut être quelque chose d'aussi simple que "C:\ssisdata\" + @[User::Invno] + ".csv"

Oh, et de définir DelayValidation = True pour le gestionnaire de connexion de fichier plat et la tâche de flux de données.

+0

Je soupçonne un coup d'oeil rapide à travers mes [réponses précédentes] (http : //stackoverflow.com/search? q = user% 3A181965) produira beaucoup de résultats pour des morceaux de cette réponse mais je ne pourrais pas penser à un double exact pour le fermer. ie [déchiqueter] (http://stackoverflow.com/search?q=user%3A181965+shred) [FELC] (http://stackoverflow.com/search?q=user%3A181965+FELC) etc – billinkc

+0

merci a parfaitement fonctionné pour moi –