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

làm thế nào để bỏ qua một hàng xấu trong nguồn tệp phẳng ssis

Tổng quan về Giải pháp

bạn có thể thực hiện việc này bằng cách thêm một Flat File Connection Manager chỉ thêm một cột với Loại dữ liệu DT_WSTR và độ dài 4000 (giả sử tên của nó là Column0 ) - Vì vậy tất cả các cột được coi là một cột lớn

  • Trong Dataflow task thêm Script Component sau Flat File Source
  • In mark Column0 làm cột đầu vào và thêm 17 cột đầu ra
  • Trong Input0_ProcessInputRow tách phương thức Column0 bằng dấu phân cách, Sau đó kiểm tra xem độ dài của mảng có =17 hay không rồi gán giá trị cho các cột đầu ra, Khác thì bỏ qua hàng.

Giải pháp chi tiết

  1. Thêm trình quản lý kết nối tệp Phẳng, Chọn tệp văn bản
  2. Đi tới Tab Nâng cao , Xóa tất cả các Cột ngoại trừ một Cột
  3. Thay đổi kiểu dữ liệu của Cột nhắc nhở thành DT_WSTR và length =4000

  1. Thêm một Nhiệm vụ DataFlow
  2. Bên trong Nhiệm vụ luồng dữ liệu, hãy thêm Nguồn tệp phẳng, Thành phần tập lệnh và Đích OLEDB

  1. Trong Thành phần Tập lệnh, Chọn Column0 làm cột đầu vào

  1. Thêm 17 cột đầu ra (các cột đầu ra tối ưu)
  2. Thay đổi OutputBuffer SynchronousInput thuộc tính thành None

  1. Chọn Ngôn ngữ Tập lệnh cho Visual Basic

  1. Trong Trình chỉnh sửa tập lệnh, hãy viết Tập lệnh sau

    Public Overrides Sub Input0_ProcessInputRow(ByVal Row As Input0Buffer)
    
        If Not Row.Column0_IsNull AndAlso
                Not String.IsNullOrEmpty(Row.Column0.Trim) Then
    
    
            Dim strColumns As String() = Row.Column0.Split(CChar(";"))
    
            If strColumns.Length <> 17 Then Exit Sub
    
    
            Output0Buffer.AddRow()
            Output0Buffer.Column = strColumns(0)
            Output0Buffer.Column1 = strColumns(1)
            Output0Buffer.Column2 = strColumns(2)
            Output0Buffer.Column3 = strColumns(3)
            Output0Buffer.Column4 = strColumns(4)
            Output0Buffer.Column5 = strColumns(5)
            Output0Buffer.Column6 = strColumns(6)
            Output0Buffer.Column7 = strColumns(7)
            Output0Buffer.Column8 = strColumns(8)
            Output0Buffer.Column9 = strColumns(9)
            Output0Buffer.Column10 = strColumns(10)
            Output0Buffer.Column11 = strColumns(11)
            Output0Buffer.Column12 = strColumns(12)
            Output0Buffer.Column13 = strColumns(13)
            Output0Buffer.Column14 = strColumns(14)
            Output0Buffer.Column15 = strColumns(15)
            Output0Buffer.Column16 = strColumns(16)
    
        End If
    
    End Sub
    
  2. Ánh xạ các Cột đầu ra với Cột Đích



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Suy nghĩ về phiên bản SQL Server 2019

  2. Giới hạn kích thước chỉ mục 900 byte về độ dài ký tự

  3. Các phương pháp hay nhất để sử dụng GUID làm khóa chính, cụ thể là về hiệu suất là gì?

  4. Truy vấn mẫu máy chủ được liên kết của SQL Server

  5. Thả khóa chính bằng cách sử dụng tập lệnh trong cơ sở dữ liệu SQL Server