Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

comment vérifier la structure des colonnes dans ssis?

Solution

D'après votre commentaire, vous manipulez des fichiers plats. Pour résoudre ce problème, vous devez lire toutes les colonnes comme une seule colonne et récupérer la structure à la volée.

Détails

  1. Ajoutez d'abord un gestionnaire de connexions de fichiers plats.
  2. Dans le gestionnaire de connexions de fichiers plats, accédez à l'onglet Avancé, supprimez toutes les colonnes et ne conservez qu'une seule colonne (Column0) .
  3. Changez le type de colonne en DT_WSTR et la longueur en 4 000.
  4. Ajouter une Dataflow task
  5. Dans la Dataflow task ajoutez une source de fichier plat, un composant de script et une destination OLEDB.
  6. Ouvrez le composant de script, accédez à l'onglet Entrée/Sortie et ajoutez 8 colonnes de sortie (Distributer_Code,Cust_code,cust_name,cust_add,zip,tel,dl_number,gstin)
  7. Changez le langage de script en Visual Basic.
  8. Dans le script, écrivez le code suivant.

    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. Mappez les colonnes de sortie à la destination OLEDB