Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

jak pominąć zły wiersz w źródle pliku płaskiego ssis?

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 dodaj Script Component po Flat File Source
  • W znaku Column0 jako kolumnę wejściową i dodaj 17 kolumn wyjściowych
  • W Input0_ProcessInputRow metoda split Column0 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

  1. Dodaj menedżera połączeń plików płaskich, wybierz plik tekstowy
  2. Przejdź do karty Zaawansowane , Usuń wszystkie kolumny z wyjątkiem jednej
  3. Zmień typ danych pozostałej kolumny na DT_WSTR i długość =4000

  1. Dodaj zadanie DataFlow
  2. Wewnątrz zadania przepływu danych dodaj płaskie źródło pliku, komponent skryptu i miejsce docelowe OLEDB

  1. W komponencie skryptów wybierz Column0 jako kolumna wejściowa

  1. Dodaj 17 kolumn wyjściowych (optymalne kolumny wyjściowe)
  2. Zmień OutputBuffer SynchronousInput właściwość do None

  1. Wybierz język skryptu na Visual Basic

  1. 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
    
  2. Mapuj kolumny wyjściowe na kolumny docelowe



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Co to jest schemat w programie SQL Server i jak utworzyć/upuścić schemat w bazie danych programu SQL Server — samouczek SQL Server / TSQL, część 27

  2. Znajdź ostatni wiersz w grupie według zapytania-SQL Server

  3. Pobierz identyfikator wstawionego rekordu:PHP i MS SQL SERVER

  4. Jak mogę zobaczyć aktywne połączenia SQL Server?

  5. Utwórz kolumnę obliczaną, która używa danych z innej tabeli w SQL Server