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 taskdodajScript ComponentpoFlat File Source - W znaku
Column0jako kolumnę wejściową i dodaj 17 kolumn wyjściowych - W
Input0_ProcessInputRowmetoda splitColumn0przez 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_WSTRi 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
Column0jako kolumna wejściowa

- Dodaj 17 kolumn wyjściowych (optymalne kolumny wyjściowe)
- Zmień
OutputBufferSynchronousInputwł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