Présentation de la solution
vous pouvez le faire en ajoutant un Flat File Connection Manager
ajouter une seule colonne avec le type de données DT_WSTR
et une longueur de 4000
(en supposant que son nom est Column0
) - Ainsi, toutes les colonnes sont considérées comme une seule grande colonne
- Dans la
Dataflow task
ajouter unScript Component
après laFlat File Source
- En repère
Column0
comme colonne d'entrée et ajouter 17 colonnes de sortie - Dans le
Input0_ProcessInputRow
méthode splitColumn0
par délimiteur, puis vérifiez si la longueur du tableau est =17 puis attribuez des valeurs aux colonnes de sortie, sinon ignorez la ligne.
Solution détaillée
- Ajouter un gestionnaire de connexion de fichier plat, sélectionner le fichier texte
- Accédez à l'onglet Avancé , Supprimer toutes les colonnes sauf une colonne
- Changez le type de données de la colonne remianing en
DT_WSTR
et longueur =4000
- Ajouter une tâche DataFlow
- Dans la tâche de flux de données, ajoutez une source de fichier plat, un composant de script et une destination OLEDB
- Dans le composant de script, sélectionnez
Column0
comme colonne d'entrée
- Ajouter 17 colonnes de sortie (les colonnes de sortie optimales)
- Modifier le
OutputBuffer
SynchronousInput
propriété àNone
- Sélectionnez le langage de script pour
Visual Basic
-
Dans l'éditeur de script, écrivez le script suivant
Public Overrides Sub Input0_ProcessInputRow(ByVal Row As Input0Buffer) If Not Row.Column0_IsNull AndAlso Not String.IsNullOrEmpty(Row.Column0.Trim) Then Dim strColumns As String() = Row.Column0.Split(CChar(";")) If strColumns.Length <> 17 Then Exit Sub Output0Buffer.AddRow() Output0Buffer.Column = strColumns(0) Output0Buffer.Column1 = strColumns(1) Output0Buffer.Column2 = strColumns(2) Output0Buffer.Column3 = strColumns(3) Output0Buffer.Column4 = strColumns(4) Output0Buffer.Column5 = strColumns(5) Output0Buffer.Column6 = strColumns(6) Output0Buffer.Column7 = strColumns(7) Output0Buffer.Column8 = strColumns(8) Output0Buffer.Column9 = strColumns(9) Output0Buffer.Column10 = strColumns(10) Output0Buffer.Column11 = strColumns(11) Output0Buffer.Column12 = strColumns(12) Output0Buffer.Column13 = strColumns(13) Output0Buffer.Column14 = strColumns(14) Output0Buffer.Column15 = strColumns(15) Output0Buffer.Column16 = strColumns(16) End If End Sub
-
Mappez les colonnes de sortie aux colonnes de destination