如何更新数据流 ssis 中的变量值?
How to update variable value in Data Flow ssis?
我是 SSIS 新手,有以下 question/problem.
可以使用 SQL 在数据流中更新变量吗?例如,我需要分配数据库中可用的最大 ID 的数值(当 etl 为 运行 时,最大值会发生变化)。所以我需要用插入的每一行更新变量。
这可能吗?或者其他方式?
我试过使用变量,但它的值在数据流中没有改变。我在数据流中也得到了一些与 OLE DB 命令脚本相关的答案,但我无法理解它。
您必须分两步完成:
1 - 从 SQL 中读取最大 ID 并将其存储到变量中
首先,您必须使用执行 SQL 任务将最大 ID 从 SQL Table 读取到变量中。您可以参考以下文章获取分步指南:
2 - 使用脚本组件增加每一行的 ID
在变量中存储最大 ID 后(示例:@[User::MaxID]
),您必须在数据流任务中使用脚本组件来为每一行增加它。
在数据流任务中添加脚本组件转换,select User::MaxID
作为 ReadOnly 变量,添加输出列 (NewID) 并使用类似的脚本(VB.NET 中的示例)
Imports System
Imports System.Data
Imports System.Math
Imports Microsoft.SqlServer.Dts.Pipeline.Wrapper
Imports Microsoft.SqlServer.Dts.Runtime.Wrapper
<Microsoft.SqlServer.Dts.Pipeline.SSISScriptComponentEntryPointAttribute> _
<CLSCompliant(False)> _
Public Class ScriptMain
Inherits UserComponent
Private CurrentID as Integer = 0
Public Overrides Sub PreExecute()
Base.PreExecute()
CurrentID = Dts.Variables.Item("User::MaxID").Value
End Sub
Public Overrides Sub Input0_ProcessInputRow(ByVal Row As Input0Buffer)
CurrentID += 1
Row.NewID = CurrentID
End Sub
End Class
类似帖子
我是 SSIS 新手,有以下 question/problem.
可以使用 SQL 在数据流中更新变量吗?例如,我需要分配数据库中可用的最大 ID 的数值(当 etl 为 运行 时,最大值会发生变化)。所以我需要用插入的每一行更新变量。
这可能吗?或者其他方式?
我试过使用变量,但它的值在数据流中没有改变。我在数据流中也得到了一些与 OLE DB 命令脚本相关的答案,但我无法理解它。
您必须分两步完成:
1 - 从 SQL 中读取最大 ID 并将其存储到变量中
首先,您必须使用执行 SQL 任务将最大 ID 从 SQL Table 读取到变量中。您可以参考以下文章获取分步指南:
2 - 使用脚本组件增加每一行的 ID
在变量中存储最大 ID 后(示例:@[User::MaxID]
),您必须在数据流任务中使用脚本组件来为每一行增加它。
在数据流任务中添加脚本组件转换,select User::MaxID
作为 ReadOnly 变量,添加输出列 (NewID) 并使用类似的脚本(VB.NET 中的示例)
Imports System
Imports System.Data
Imports System.Math
Imports Microsoft.SqlServer.Dts.Pipeline.Wrapper
Imports Microsoft.SqlServer.Dts.Runtime.Wrapper
<Microsoft.SqlServer.Dts.Pipeline.SSISScriptComponentEntryPointAttribute> _
<CLSCompliant(False)> _
Public Class ScriptMain
Inherits UserComponent
Private CurrentID as Integer = 0
Public Overrides Sub PreExecute()
Base.PreExecute()
CurrentID = Dts.Variables.Item("User::MaxID").Value
End Sub
Public Overrides Sub Input0_ProcessInputRow(ByVal Row As Input0Buffer)
CurrentID += 1
Row.NewID = CurrentID
End Sub
End Class
类似帖子