Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

jak sprawdzić strukturę kolumn w ssis?

Rozwiązanie

Na podstawie Twojego komentarza masz do czynienia z plikami płaskimi. Aby rozwiązać ten problem, musisz odczytać wszystkie kolumny jako jedną kolumnę i pobrać strukturę w biegu.

Szczegóły

  1. Najpierw dodaj menedżera połączeń plików płaskich.
  2. W menedżerze połączeń plików prostych przejdź do zakładki Zaawansowane, usuń wszystkie kolumny i zachowaj tylko jedną kolumnę (Kolumna0) .
  3. Zmień typ kolumny na DT_WSTR i długość na 4000.
  4. Dodaj Dataflow task
  5. W Dataflow task dodaj źródło Flat File, komponent skryptu i miejsce docelowe OLEDB.
  6. Otwórz komponent skryptu, przejdź do karty Wejście/Wyjście i dodaj 8 kolumn wyjściowych (Distributer_Code,Cust_code,cust_name,cust_add,zip,tel,dl_number,gstin)
  7. Zmień język skryptów na Visual Basic.
  8. Wewnątrz skryptu napisz następujący kod.

    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. Mapuj kolumny wyjściowe do miejsca docelowego 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. Pełne łączenie wielu tabel w tych samych kolumnach

  2. Sprawdź, czy data nakłada się w SQL

  3. Kopiowanie pakietów SSIS wdrożonych na SQL Server z powrotem do Visual Studio 2008

  4. Znajdowanie poprzedniej niezerowej wartości z listy uporządkowanej według daty

  5. Pytanie dotyczące prostej procedury składowanej