sql >> Database >  >> RDS >> Sqlserver

hoe de kolomstructuur in ssis te controleren?

Oplossing

Op basis van uw opmerking handelt u met platte bestanden. Om dit probleem op te lossen, moet u alle kolommen als één kolom lezen en de structuur onderweg ophalen.

Details

  1. Voeg eerst een verbindingsbeheerder voor platte bestanden toe.
  2. Ga in de verbindingsbeheerder voor platte bestanden naar het tabblad Geavanceerd, verwijder alle kolommen en bewaar slechts één kolom (Kolom0) .
  3. Verander het kolomtype in DT_WSTR en de lengte in 4000.
  4. Een Dataflow task toevoegen
  5. Binnen de Dataflow task voeg een Flat File-bron, een scriptcomponent en een OLEDB-bestemming toe.
  6. Open de scriptcomponent, ga naar het tabblad Input/Output en voeg 8 uitvoerkolommen toe (Distributer_Code,Cust_code,cust_name,cust_add,zip,tel,dl_number,gstin)
  7. Verander de scripttaal in Visual Basic.
  8. Schrijf in het script de volgende code.

    Dim Distributer_Code as integer = -1
    Dim Cust_code as integer = -1
    Dim cust_name as integer = -1
    Dim cust_add as integer = -1
    Dim zip as integer = -1
    Dim tel as integer = -1
    Dim dl_number as integer = -1
    Dim gstin as integer = -1
    Dim intRowIndex as integer = 0
    
    Public Overrides Sub Input0_ProcessInputRow(ByVal Row As Input0Buffer)
    
        If intRowIndex = 0 then
    
            Dim strfields() as string = Row.Column0.split(CChar("|"))
            Dim idx as integer = 0
    
            For idx = 0 To strFields.length - 1
    
                Select case str
    
                Case "Distributer_Code"
                    Distributer_Code = idx  
                Case "Cust_code"
                    Cust_code = idx 
                Case "cust_name"
                    cust_name = idx 
                Case "cust_add"
                    cust_add = idx  
                Case "zip"
                    zip = idx   
                Case "tel"
                    tel = idx   
                Case "dl_number"
                    dl_number = idx 
                Case "gstin"
                    gstin = idx 
    
                End Select
    
            Next
    
        Else
    
            Dim strfields() as string = Row.Column0.split(CChar("|"))
    
            If Distributer_Code > -1 Then Row.DistributerCode = strfields(Distributer_Code)
            If Cust_code > -1 Then Row.Custcode = strfields(Cust_code)
            If cust_name > -1 Then Row.custname = strfields(cust_name)
            If cust_add > -1 Then Row.custadd = strfields(cust_add)
            If zip > -1 Then Row.zip = strfields(zip)
            If tel > -1 Then Row.tel = strfields(tel)
            If dl_number > -1 Then Row.dlnumber = strfields(dl_number)
            If gstin > -1 Then Row.gstin = strfields(gstin)
    
        End If
    
    
        intRowIndex += 1
    
    End Sub
    
  9. Wijs de uitvoerkolommen toe aan de OLEDB-bestemming




  1. transponeer kolom naar rij orakel

  2. Dichtbij locatie zoeken op Google Maps, PHP &MySQL

  3. MySql:als de waarde bestaat UPDATE anders INSERT

  4. Ontwikkelingen van Azure Virtual Machine voor gebruik van SQL Server