sql >> Base de Datos >  >> RDS >> Sqlserver

¿Cómo verificar la estructura de la columna en ssis?

Solución

Según su comentario, está manejando con archivos planos. Para resolver este problema, debe leer todas las columnas como una columna y recuperar la estructura sobre la marcha.

Detalles

  1. Primero agregue un administrador de conexión de archivos planos.
  2. En el administrador de conexión de archivos planos, vaya a la pestaña Avanzado, elimine todas las columnas y mantenga solo una columna (Column0) .
  3. Cambie el tipo de columna a DT_WSTR y la longitud a 4000.
  4. Agregar una Dataflow task
  5. Dentro de la Dataflow task agregue una fuente de archivo sin formato, un componente de secuencia de comandos y un destino OLEDB.
  6. Abra el componente de script, vaya a la pestaña Entrada/Salida y agregue 8 columnas de salida (Distributer_Code,Cust_code,cust_name,cust_add,zip,tel,dl_number,gstin)
  7. Cambie el lenguaje de script a Visual Basic.
  8. Dentro del script escribe el siguiente código.

    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. Asigne las columnas de salida al destino OLEDB