Přehled řešení
můžete to udělat přidáním jednoho Flat File Connection Manager
přidat pouze jeden sloupec s datovým typem DT_WSTR
a délka 4000
(za předpokladu, že se jmenuje Column0
) - Všechny sloupce jsou tedy považovány za jeden velký sloupec
- V
Dataflow task
přidatScript Component
zaFlat File Source
- V označení
Column0
jako vstupní sloupec a přidat 17 výstupních sloupců - V
Input0_ProcessInputRow
rozdělení metodyColumn0
pomocí oddělovače, Poté zkontrolujte, zda je délka pole =17, poté přiřaďte hodnoty výstupním sloupcům, jinak řádek ignorujte.
Podrobné řešení
- Přidejte správce připojení plochých souborů, vyberte textový soubor
- Přejděte na kartu Upřesnit , Odstranit všechny sloupce kromě jednoho
- Změňte datový typ zbývajícího sloupce na
DT_WSTR
a délka =4000
- Přidat úkol DataFlow
- Do úlohy toku dat přidejte zdroj plochého souboru, komponentu skriptu a cíl OLEDB
- V komponentě Script vyberte
Column0
jako vstupní sloupec
- Přidejte 17 výstupních sloupců (optimální výstupní sloupce)
- Změňte
OutputBuffer
SynchronousInput
vlastnost naNone
- Vyberte Skriptovací jazyk na
Visual Basic
-
V editoru skriptů napište následující skript
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
-
Mapujte výstupní sloupce na cílové sloupce