VHK*_*VHK 6 sql-server ssis etl dataflow ssis-2012
我在我的数据流中使用FlatFile Source Manager
- > Script COmponent as Trans
- > OLEDB destination
.
Source从平面文件中读取所有行,我想跳过更新数据库的最后一行(Trailer record).
由于它包含NULL
值,因此数据库会引发错误.
请帮我解决这个问题.
问候,VHK
要忽略最后一行,您必须执行以下步骤:
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
变量添加到脚本只读变量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
Run Code Online (Sandbox Code Playgroud)Conditional Split
在脚本组件中添加Next
使用以下表达式拆分行
[IsLastRow] == False
Run Code Online (Sandbox Code Playgroud)OLEDB Destination
next添加到条件拆分旁注:如果您想忽略另一种情况(不是最后一行)的行,只需更改脚本组件中编写的脚本以满足您的要求
如果您的要求是避免平面文件中的行具有空值,那么您可以遵循以下方法,
Conditional Split
组件,并在case expression
提供 as !ISNULL(Column1) && !ISNULL(Column2)
(Column1 和 Column2 可以如您所愿。如果您的平面文件有一个名为的列,比如说ID
,并且除了最后一行之外它没有空值,那么您可以使用 as !ISNULL(ID)
)。希望这会对您有很大帮助。
归档时间: |
|
查看次数: |
5286 次 |
最近记录: |