sql >> Databáze >  >> RDS >> Sqlserver

jak přeskočit špatný řádek ve zdroji plochého souboru ssis

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řidat Script Component za Flat File Source
  • V označení Column0 jako vstupní sloupec a přidat 17 výstupních sloupců
  • V Input0_ProcessInputRow rozdělení metody Column0 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í

  1. Přidejte správce připojení plochých souborů, vyberte textový soubor
  2. Přejděte na kartu Upřesnit , Odstranit všechny sloupce kromě jednoho
  3. Změňte datový typ zbývajícího sloupce na DT_WSTR a délka =4000

  1. Přidat úkol DataFlow
  2. Do úlohy toku dat přidejte zdroj plochého souboru, komponentu skriptu a cíl OLEDB

  1. V komponentě Script vyberte Column0 jako vstupní sloupec

  1. Přidejte 17 výstupních sloupců (optimální výstupní sloupce)
  2. Změňte OutputBuffer SynchronousInput vlastnost na None

  1. Vyberte Skriptovací jazyk na Visual Basic

  1. 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
    
  2. Mapujte výstupní sloupce na cílové sloupce



  1. Instalace MySQL na CentOS 7

  2. ROUND(číslo) Funkce v Oracle

  3. Získat nejbližší zeměpisnou délku a šířku z databázové tabulky MSSQL?

  4. Jak date_trunc() funguje v PostgreSQL