更新时间:2021-11-16 17:31:34
您可以通过添加一个平面文件连接管理器
来实现这一点,只添加一个数据类型为DT_WSTR
且长度为4000
的列(假设它的名字是 Column0
) - 所以所有的列都被认为是一个大列
you can do this by adding one Flat File Connection Manager
add only one column with Data type DT_WSTR
and a length of 4000
(assuming it's name is Column0
) - So all column are considered as one big column
Dataflow task
中,在Flat File Source
Script Component
Column0
标记为输入列并添加17个输出列Input0_ProcessInputRow
方法中,通过分隔符分割Column0
,然后检查数组的长度是否为= 17,然后为输出列赋值,否则忽略该行.莉>
Dataflow task
add a Script Component
after the Flat File Source
Column0
as Input Column and Add 17 Output ColumnsInput0_ProcessInputRow
method split Column0
by delimiter, Then check if the length of array is = 17 then assign values to output columns, Else ignore the row.DT_WSTR
并且长度 = 4000
DT_WSTR
and length = 4000
Column0
作为输入列OutputBuffer
SynchronousInput
属性更改为 None
OutputBuffer
SynchronousInput
property to None
Visual Basic
的脚本语言在脚本编辑器中编写以下脚本
In the Script Editor write the following Script
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
将输出列映射到目标列
Map the Output Columns to the Destination Columns