Omówienie rozwiązania
możesz to zrobić, dodając jednego Flat File Connection Manager
dodaj tylko jedną kolumnę z typem danych DT_WSTR
i długość 4000
(zakładając, że jego nazwa to Column0
) — więc wszystkie kolumny są traktowane jako jedna duża kolumna
- W
Dataflow task
dodajScript Component
poFlat File Source
- W znaku
Column0
jako kolumnę wejściową i dodaj 17 kolumn wyjściowych - W
Input0_ProcessInputRow
metoda splitColumn0
przez ogranicznik, Następnie sprawdź, czy długość tablicy wynosi =17, a następnie przypisz wartości do kolumn wyjściowych, W przeciwnym razie zignoruj wiersz.
Szczegółowe rozwiązanie
- Dodaj menedżera połączeń plików płaskich, wybierz plik tekstowy
- Przejdź do karty Zaawansowane , Usuń wszystkie kolumny z wyjątkiem jednej
- Zmień typ danych pozostałej kolumny na
DT_WSTR
i długość =4000
- Dodaj zadanie DataFlow
- Wewnątrz zadania przepływu danych dodaj płaskie źródło pliku, komponent skryptu i miejsce docelowe OLEDB
- W komponencie skryptów wybierz
Column0
jako kolumna wejściowa
- Dodaj 17 kolumn wyjściowych (optymalne kolumny wyjściowe)
- Zmień
OutputBuffer
SynchronousInput
właściwość doNone
- Wybierz język skryptu na
Visual Basic
-
W Edytorze skryptów napisz następujący skrypt
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
-
Mapuj kolumny wyjściowe na kolumny docelowe