在SSIS程序包中,我有一个“ Power Query”“源”步骤,结果为3列,“区域”,“设施”和“每周金额”。我对使用Power Query的Weekly_Amount列更新SQL表感兴趣,其中Region和Facility与SQL表记录相关。示例:
select * from "User" where email = "user@email.com"
我需要使用哪个SSIS步骤来完成上述任务?我总是可以包含一条T-Sql Update语句。
谢谢。
答案 0 :(得分:1)
您可以在数据流任务中使用OLEDB命令转换来做到这一点:
Update {SQL Table}
set {SQL Table}.Weekly_Amount = ?
where {SQL Table}.Region = ?
and {SQL Table}.Facility = ?
并将这些列映射到OLEDB Command配置表中的参数。
参考和有用的文章
从性能角度考虑,不建议使用OLEDB命令,因为它将对数据管道中的每一行执行一条更新语句。
您可以将数据导入到临时表中,并使用Execute SQL Task通过类似的查询来更新数据:
Update {SQL Table}
set {SQL Table}.Weekly_Amount = {Staging Table}.Weekly_Amount
FROM {SQL Table} INNER JOIN {Staging Table}
ON {SQL Table}.Region = {Staging Table}.Region
AND {SQL Table}.Facility = {Staging Table}.Facility