我的ETL当前场景如下:
- 对于每对相同的表 dbo.T 和 staging.T
- 从暂存中删除。T
- 从远程 Web 服务中提取并加载到 staging.T
- 对于 staging.T 中的每一行
- dbo.T有PK吗?
- 是的,更新
- 不,插入
我的主要疑问是围绕列列表的维护。
MERGE 语句似乎是最好的选择,但它似乎没有更新整行的能力。因此,我发现需要维护长列表:
Target.Column1 = Source.Column1,
Target.Column1 = Source.Column1,
...,
Target.ColumnN = Source.ColumnN
我找到了这个代码生成模板来帮助合并,但我非常想知道是否有标准方法来解决我刚才描述的问题,或者更重要的是,我是否遗漏了大局的某些部分——即我的方法是错误的.
换句话说,如果一个专业的 ETL 开发人员正在这样做(假设他们会这样做),他们会怎么做呢?
我想我想要达到的目标是一种可靠的方式来更改我的表的架构,并且不会有一个容易出错的更新所有列复制列表的过程。
更具体地说,这里是我实现的前 4 个表的 SSIS 任务和架构的屏幕截图。