sql >> Databasteknik >  >> RDS >> Sqlserver

hur kontrollerar man kolumnstruktur i ssis?

Lösning

Baserat på din kommentar hanterar du platta filer. För att lösa detta problem måste du läsa alla kolumner som en kolumn och hämta strukturen när du är på språng.

Detaljer

  1. Lägg först till en anslutningshanterare för platt fil.
  2. I den platta filanslutningshanteraren, gå till fliken Avancerat, ta bort alla kolumner och behåll bara en kolumn (kolumn0) .
  3. Ändra kolumntypen till DT_WSTR och längden till 4000.
  4. Lägg till en Dataflow task
  5. Inuti Dataflow task lägg till en platt filkälla, en skriptkomponent och en OLEDB-destination.
  6. Öppna skriptkomponenten, gå till fliken Input/Output och lägg till 8 utdatakolumner (Distributer_Code,Cust_code,cust_name,cust_add,zip,tel,dl_number,gstin)
  7. Ändra skriptspråket till Visual Basic.
  8. Skriv följande kod inuti skriptet.

    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. Mappa utdatakolumnerna till OLEDB-destinationen




  1. Designa en databas:Vilket är det bästa tillvägagångssättet?

  2. Det gick inte att delta i transaktionen

  3. Säkerhetskopiering av PostgreSQL-databasdesign - utan data

  4. mysql.h saknas .... (Ruby on Rails, OSX)