Overzicht oplossing
u kunt dit doen door er een toe te voegen Flat File Connection Manager
voeg slechts één kolom toe met gegevenstype DT_WSTR
en een lengte van 4000
(ervan uitgaande dat de naam Column0
is) ) - Dus alle kolommen worden als één grote kolom beschouwd
- In de
Dataflow task
voeg eenScript Component
toe na deFlat File Source
- Ter teken
Column0
als invoerkolom en 17 uitvoerkolommen toevoegen - In de
Input0_ProcessInputRow
methode splitColumn0
door scheidingsteken, controleer dan of de lengte van de array =17 is en wijs vervolgens waarden toe aan uitvoerkolommen, negeer anders de rij.
Gedetailleerde oplossing
- Voeg een verbindingsbeheerder voor platte bestanden toe, selecteer het tekstbestand
- Ga naar het tabblad Geavanceerd , Verwijder alle kolommen behalve één kolom
- Verander het datatype van de overblijvende kolom in
DT_WSTR
en lengte =4000
- Een DataFlow-taak toevoegen
- Voeg binnen de gegevensstroomtaak een platte bestandsbron, scriptcomponent en OLEDB-bestemming toe
- Selecteer in de scriptcomponent
Column0
als invoerkolom
- Voeg 17 uitvoerkolommen toe (de optimale uitvoerkolommen)
- Wijzig de
OutputBuffer
SynchronousInput
eigenschap naarNone
- Selecteer de scripttaal voor
Visual Basic
-
Schrijf in de Script Editor het volgende Script
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
-
Wijs de uitvoerkolommen toe aan de doelkolommen