2017-04-07 3 views
2

Je souhaite créer une sortie de fichier à plat, dans laquelle le format des lignes est différent. Le fichier comporte un en-tête, des lignes de données intermédiaires et une rangée de bas de page. fichier ressembleront ci-dessousSSIS: Création d'un fichier plat avec différents formats de ligne

H|deptcode123|deptNameXYZ|totalemp300 
E|Sam|Johnson|address1|empCode1|........many other columns 
E|Sam2|Johnson2|address2|empCode2|........many other columns 
E|Sam4|Johnson3|address3|empCode3|........many other columns 
E|Sam5|Johnson4|address4|empCode4|........many other columns   
J|300|250000 

Comment puis-je générer ce fichier dans SSIS. Les entrées proviendront de différentes tables, j'ai l'intention d'écrire 3 requêtes séparées/sp pour obtenir l'en-tête, la ligne du milieu et l'enregistrement de la ligne de pied de page.

+0

est l'en-tête juste un début, ou avez-vous plusieurs groupes d'en-têtes, détail, bas de page qui apparaît? Si vous avez plusieurs groupes de H/D/F, vous devez essentiellement le construire dans une instruction SQL. Les deux solutions ci-dessous ne tiennent pas compte des en-têtes réapparaissant au milieu –

+0

L'en-tête (H) et le pied de page (F) apparaîtront une seule fois dans un fichier, les lignes du milieu (D) seront des lignes multiples. – coder

Répondre

2

Si vous souhaitez créer un fichier plat où les lignes ont des métadonnées différentes. Vous devez utiliser un gestionnaire de connexion de fichier plat à une colonne. Avec Dt_WStr type et longueur = 4000

utilisation consécutive 3 DataFlow task données en utilisant le même Flat file destination

premier écrire l'en-tête, un deuxième des rangées intermédiaires, une troisième pied de page.

Vous pouvez concaténer les valeurs de la sélection statment ou en utilisant un Script Component

2

Pour ce faire, vous avez besoin d'un flux de données et le gestionnaire de connexion pour chaque type de jeu de lignes. Par exemple, pour avoir un en-tête, un corps et un pied de page différents, vous aurez besoin de 3 flux de données et de 3 gestionnaires de connexions de fichiers plats. Chaque gestionnaire de connexion de fichier plat pointe vers le même fichier. L'astuce consiste à s'assurer que le paramètre Overwrite data in the file dans la destination Fichier plat n'est pas coché. De cette manière, chaque flux de données s'exécute et s'ajoute au fichier et chaque flux de données peut avoir ses colonnes discrètes et ses types de données.

enter image description hereenter image description here

+0

J'ai essayé ceci, mais le nombre de colonnes dans chaque type est différent. L'en-tête (H) a supposé 5 colonnes comme les lignes du milieu (D) a 20 colonnes, alors max de ce (20) est considéré comme le nombre de colonnes dans le fichier plat. Et la ligne d'en-tête ressemble à ceci H | deptcode123 | deptNameXYZ | totalemp300 ||||||||| ... – coder