我正在使用FlatFile Source Manager
- > Script COmponent as Trans
- >我的数据流中有OLEDB destination
。
Source从平面文件中读取所有行,我想跳过更新数据库的最后一行(Trailer record)。
由于它包含NULL
值,因此数据库会引发错误。
请帮我解决此问题。
此致 VHK
答案 0 :(得分:3)
要忽略最后一行,您必须执行以下步骤:
DataFlow Task
(让我们将其命名为DFT RowCount
) System.Int32
类型的全局变量(名称:User :: RowCount) Flat File Source
(您要导入的文件) RowCount
Flat File Source
组件
RowCount
结果映射到变量User::RowCount
DataFlow Task
(让我们将其命名为DFT Import
) DFT Import
中添加Flat File Source
(您需要导入的文件) Script Component
Flat File Source
User::RowCount
变量添加到脚本 ReadOnly变量 DT_BOOL
的输出列(名称:IsLastRow
)在“脚本窗口”中编写以下脚本
Dim intRowCount As Integer = 0
Dim intCurrentRow As Integer = 0
Public Overrides Sub PreExecute()
MyBase.PreExecute()
intRowCount = Variables.RowCount
End Sub
Public Overrides Sub Input0_ProcessInputRow(ByVal Row As Input0Buffer)
intCurrentRow += 1
If intCurrentRow = intRowCount Then
Row.IsLastRow = True
Else
Row.IsLastRow = False
End If
End Sub
在脚本组件旁边添加Conditional Split
使用以下表达式分割行
[IsLastRow] == False
答案 1 :(得分:1)
如果您的要求是避免在平面文件中具有空值的行,那么您可以按照以下方法进行操作,
Conditional Split
组件,并在case expression
提供为!ISNULL(Column1) && !ISNULL(Column2)
(Column1和Column2可以如您所愿。如果您的平面文件有一个名为的列,请说{{1}并且它除了最后一行之外没有空值,那么你可以使用ID
)。希望这会对你有所帮助。