Løsningsoversigt
du kan gøre dette ved at tilføje en Flat File Connection Manager
tilføje kun én kolonne med datatypen DT_WSTR
og en længde på 4000
(forudsat at dets navn er Column0
) - Så alle kolonner betragtes som én stor kolonne
- I
Dataflow task
tilføje enScript Component
efterFlat File Source
- I mærket
Column0
som inputkolonne og Tilføj 17 outputkolonner - I
Input0_ProcessInputRow
metode opdeltColumn0
med afgrænsning. Kontroller derefter, om længden af array er =17, og tildel derefter værdier til outputkolonner, ellers ignorer rækken.
Detaljeret løsning
- Tilføj en flad filforbindelsesadministrator, vælg tekstfilen
- Gå til fanen Avanceret , Slet alle kolonner undtagen én kolonne
- Skift datatypen for den tilbageværende kolonne til
DT_WSTR
og længde =4000
- Tilføj en DataFlow-opgave
- Tilføj en flad filkilde, scriptkomponent og OLEDB-destination inde i dataflowopgaven
- Vælg
Column0
i scriptkomponenten som inputkolonne
- Tilføj 17 outputkolonner (de optimale outputkolonner)
- Skift
OutputBuffer
SynchronousInput
egenskab tilNone
- Vælg scriptsproget til
Visual Basic
-
Skriv følgende script
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
-
Tilknyt outputkolonnerne til destinationskolonnerne