Ö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 tasklägg till enScript ComponentefterFlat File Source - I märket
Column0som inmatningskolumn och Lägg till 17 utdatakolumner - I
Input0_ProcessInputRowmetod splitColumn0med 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_WSTRoch 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
Column0i skriptkomponenten som inmatningskolumn

- Lägg till 17 utdatakolumner (de optimala utdatakolumnerna)
- Ändra
OutputBufferSynchronousInputegenskap 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