我尝试使用SSIS进行从旧系统到新系统的数据迁移。我有表TableA
,TableB
和OldTable
。表格如下:
TableA
TableB
OldTable
如您所见,TableA
和TableB
(在新系统中)实际上OldTable
分为两个表。
我的问题是,为了在TableB
中插入记录,我需要知道在PrimaryKey
中插入相应记录时分配的TableA
。
我原本计划在尝试将记录插入表LookUp
时执行TableB
但是,TableA
中存储的任何数据都不允许我返回
有什么想法吗?
答案 0 :(得分:1)
听起来你正在使用单一数据流: source - >拆分 - >两个目的地(TableA
,TableB
)。
如果您将流程划分为两个数据流,该怎么办?
OldTable
拉出并加载到TableA
。 TableB
- 再次从OldTable
拉出来,但是通过TableA
到Merge Join
来获取Lookup
的相关标识值{1}}来自那张桌子。 (注意:第二个流需要设置为仅在第一个流通过优先约束完成后运行,因为它依赖于OldTable
在运行之前插入TableA
的数据。)< / p>
答案 1 :(得分:0)
您可以使用insert语句中的OUTPUT Clause来返回标识列的值。
INSERT TableA (BusinessTypeEnum, Other)
OUTPUT INSERTED.ID
VALUES ('abc', 'def')
除了插入记录外,上面的内容就像选择一样。
我应该提到OUTPUT子句中有一个INTO子句,可以与批量插入一起使用。以上示例适用于单个记录插入。