我构建了一个SSIS包,它查看源表并将此数据推送到Azure中的数据仓库。到目前为止,它添加的条目不在仓库中,而是在源表中。我对如何执行此包的更新部分感到困惑,其中数据仓库包含与源表相同的条目,但需要更新以反映对源表所做的更改。
使用OLE DB连接时,目标高级编辑器的“自定义选项”部分中有一个“SQL”参数。 ado.net目的地高级编辑器没有这种能力。更新这些条目的正确方法是什么?
我进行了广泛的搜索,但却找不到明确的答案。如果这是一个简单的解决方案,请原谅我的错误。
答案 0 :(得分:1)
您有两种可能的方法 - 使用OLEDB命令更新并使用中间表更新w。
OLEDB Command Transformation为数据转换中的每一行数据块运行指定的命令。您只需将OLEDB Command添加到数据转换中,选择 OLEDB Connection Manager 并输入这样的参数化SQL命令
点击省略号打开SQL Command Editor窗口
使用参数设置SQL命令后,您可以将数据流中的字段绑定到下一个选项卡上的参数
这就是它!更多信息 - MS Docs。
这种方法的优点 - 很简单。缺点 - 对于每个更新行,都会触发一个单独的SQL命令,这对性能不利。
然后您可以通过中间表进行更新。主要思想 - 您将要更新的所有表行存储在特殊表中。然后 - 运行带有SQL Update的SQL Command,如
Update [tgt_tbl] Set [tgt_tbl].[field1] = [interm_tbl].[field1]
From [tgt_tbl] tgt
Inner Join [interm_tbl] itbl On tgt.key = itbl.key
这种方法更复杂,但性能肯定更好。