sql >> Database teknologi >  >> RDS >> Sqlserver

hvordan man kontrollerer kolonnestruktur i ssis?

Løsning

Baseret på din kommentar håndterer du med flade filer. For at løse dette problem skal du læse alle kolonner som én kolonne og hente strukturen på farten.

Detaljer

  1. Tilføj først en flad filforbindelsesadministrator.
  2. I den flade filforbindelseshåndtering skal du gå til fanen Avanceret, fjerne alle kolonner og kun beholde én kolonne (Kolonne0) .
  3. Skift kolonnetypen til DT_WSTR og længden til 4000.
  4. Tilføj en Dataflow task
  5. Inde i Dataflow task tilføje en flad filkilde, en scriptkomponent og en OLEDB-destination.
  6. Åbn script-komponenten, gå til fanen Input/Output, og tilføj 8 outputkolonner (Distributer_Code,Cust_code,cust_name,cust_add,zip,tel,dl_number,gstin)
  7. Skift scriptsproget til Visual Basic.
  8. Skriv følgende kode inde i scriptet.

    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. Tilknyt outputkolonnerne til OLEDB-destinationen




  1. IDE til Pl/SQL udvikling

  2. ASP.Net / MySQL:Oversættelse af indhold til flere sprog

  3. GRANT-syntaks for domæne\bruger

  4. Implementering af historik for PostgreSQL-tabellen