Översikt över lösning
du kan göra detta genom att lägga till en Flat File Connection Manager
lägg bara till en kolumn med datatypen DT_WSTR
och en längd på 4000
(förutsatt att det heter Column0
) - Så alla kolumner betraktas som en stor kolumn
- I
Dataflow task
lägg till enScript Component
efterFlat File Source
- I märket
Column0
som inmatningskolumn och Lägg till 17 utdatakolumner - I
Input0_ProcessInputRow
metod splitColumn0
med avgränsare, kontrollera sedan om längden på matrisen är =17 och tilldela sedan värden till utdatakolumner, annars ignorera raden.
Detaljerad lösning
- Lägg till en anslutningshanterare för platt fil, välj textfilen
- Gå till fliken Avancerat , Ta bort alla kolumner utom en kolumn
- Ändra datatypen för den återstående kolumnen till
DT_WSTR
och längd =4000
- Lägg till en DataFlow-uppgift
- Inuti dataflödesuppgiften lägg till en platt filkälla, skriptkomponent och OLEDB-destination
- Välj
Column0
i skriptkomponenten som inmatningskolumn
- Lägg till 17 utdatakolumner (de optimala utdatakolumnerna)
- Ändra
OutputBuffer
SynchronousInput
egenskap tillNone
- Välj skriptspråket för
Visual Basic
-
Skriv följande skript
i Script EditorPublic 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
-
Mappa utdatakolumnerna till destinationskolumnerna