Sqlserver
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Sqlserver

làm thế nào để kiểm tra cấu trúc cột trong ssis?

Giải pháp

Dựa trên nhận xét của bạn, bạn đang xử lý với các tệp phẳng. Để giải quyết vấn đề này, bạn phải đọc tất cả các cột dưới dạng một cột và truy xuất cấu trúc khi đang di chuyển.

Chi tiết

  1. Đầu tiên, hãy thêm trình quản lý kết nối tệp phẳng.
  2. Trong trình quản lý kết nối tệp phẳng, chuyển đến Tab Nâng cao, xóa tất cả các cột và chỉ giữ lại một cột (Column0) .
  3. Thay đổi loại cột thành DT_WSTR và độ dài thành 4000.
  4. Thêm một Dataflow task
  5. Bên trong Dataflow task thêm nguồn Tệp phẳng, thành phần tập lệnh và đích đến OLEDB.
  6. Mở thành phần tập lệnh, chuyển đến Tab Đầu vào / Đầu ra và thêm 8 cột đầu ra (Distributer_Code, Cust_code, cust_name, cust_add, zip, tel, dl_number, gstin)
  7. Thay đổi ngôn ngữ tập lệnh thành Visual Basic.
  8. Bên trong tập lệnh, hãy viết đoạn mã sau.

    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. Ánh xạ các cột đầu ra tới Đích 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. Nhận các giá trị ranh giới cho một bảng được phân vùng trong SQL Server (T-SQL)

  2. Khởi động EF cực kỳ chậm - 15 phút

  3. Điền vào ngày bị thiếu cho đầu ra truy vấn máy chủ SQL bằng CTE

  4. Truyền tham số Bảng giá trị vào một thủ tục được lưu trữ

  5. Chạy các truy vấn lớn trong MS SQL nền