Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

как да проверя структурата на колоните в ssis?

Решение

Въз основа на вашия коментар вие работите с плоски файлове. За да разрешите този проблем, трябва да прочетете всички колони като една колона и да извлечете структурата в движение.

Подробности

  1. Първо добавете диспечера за връзки с плоски файлове.
  2. В диспечера на връзките с плоски файлове отидете в раздела Разширени, премахнете всички колони и запазете само една колона (Колона0) .
  3. Променете типа на колоната на DT_WSTR и дължината на 4000.
  4. Добавяне на Dataflow task
  5. В Dataflow task добавете източник на плосък файл, компонент на скрипт и OLEDB дестинация.
  6. Отворете компонента на скрипта, отидете на раздела Input/Output и добавете 8 изходни колони (Distributer_Code,Cust_code,cust_name,cust_add,zip,tel,dl_number,gstin)
  7. Променете скриптовия език на Visual Basic.
  8. Вътре в скрипта напишете следния код.

    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. Съпоставете изходните колони с местоназначението на OLEDB




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. как да търсите в съхранени процедури на Sql Server 2008 R2 за низ?

  2. T-SQL:Как да създам уникален ключ, който е чувствителен към главни и малки букви?

  3. C#/SQL:архивиране и възстановяване чрез копиране и замяна на файлове на база данни?

  4. Как да коригирате „Заявката COMMIT TRANSACTION няма съответна BEGIN TRANSACTION“ в SQL Server

  5. Объркан относно UPDLOCK, HOLDLOCK