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êmScript Component
sauFlat 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ứcColumn0
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
- Thêm trình quản lý kết nối tệp Phẳng, Chọn tệp văn bản
- Đi tới Tab Nâng cao , Xóa tất cả các Cột ngoại trừ một Cột
- Thay đổi kiểu dữ liệu của Cột nhắc nhở thành
DT_WSTR
và length =4000
- Thêm một Nhiệm vụ DataFlow
- 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
- Trong Thành phần Tập lệnh, Chọn
Column0
làm cột đầu vào
- Thêm 17 cột đầu ra (các cột đầu ra tối ưu)
- Thay đổi
OutputBuffer
SynchronousInput
thuộc tính thànhNone
- Chọn Ngôn ngữ Tập lệnh cho
Visual Basic
-
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
-
Ánh xạ các Cột đầu ra với Cột Đích