sql >> Database >  >> RDS >> Sqlserver

hoe een slechte rij over te slaan in de platte bestandsbron van ssis

Overzicht oplossing

u kunt dit doen door er een toe te voegen Flat File Connection Manager voeg slechts één kolom toe met gegevenstype DT_WSTR en een lengte van 4000 (ervan uitgaande dat de naam Column0 is) ) - Dus alle kolommen worden als één grote kolom beschouwd

  • In de Dataflow task voeg een Script Component toe na de Flat File Source
  • Ter teken Column0 als invoerkolom en 17 uitvoerkolommen toevoegen
  • In de Input0_ProcessInputRow methode split Column0 door scheidingsteken, controleer dan of de lengte van de array =17 is en wijs vervolgens waarden toe aan uitvoerkolommen, negeer anders de rij.

Gedetailleerde oplossing

  1. Voeg een verbindingsbeheerder voor platte bestanden toe, selecteer het tekstbestand
  2. Ga naar het tabblad Geavanceerd , Verwijder alle kolommen behalve één kolom
  3. Verander het datatype van de overblijvende kolom in DT_WSTR en lengte =4000

  1. Een DataFlow-taak toevoegen
  2. Voeg binnen de gegevensstroomtaak een platte bestandsbron, scriptcomponent en OLEDB-bestemming toe

  1. Selecteer in de scriptcomponent Column0 als invoerkolom

  1. Voeg 17 uitvoerkolommen toe (de optimale uitvoerkolommen)
  2. Wijzig de OutputBuffer SynchronousInput eigenschap naar None

  1. Selecteer de scripttaal voor Visual Basic

  1. Schrijf in de Script Editor het volgende Script

    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. Wijs de uitvoerkolommen toe aan de doelkolommen



  1. Opgeslagen Java-procedure versus PL/SQL-opgeslagen procedure

  2. Tabel vastzetten in de Flash-cache

  3. PayPal ODBC-stuurprogramma

  4. Meet u de prestaties van SQL Server met deze statistieken?