如何使用ETL管理身份?

时间:2009-03-06 19:30:05

标签: sql-server database etl

我需要帮助找出工作流程并且我不确定如何去做...假设我正在将(ETL?)数据从表A转换为表B.表A具有复合主键A .a + A.b + Ac,而表B只有一个自动填充的标识列。如何将复合键从A映射回到插入B时创建的标识?

我希望表B中没有任何与A的复合键相关的列,因为还有许多其他表需要进行相同的操作但没有相同的复合键结构。

2 个答案:

答案 0 :(得分:3)

如果我理解正确,你不能将表B中的记录与转换后的表A的记录联系起来,除非你在转换过程中以某种方式捕获A的复合键和B的标识符之间的映射。

您可以向A添加一个列并预先计算插入B时要使用的标识符。然后您将拥有映射。如果您不想向A添加列,也可以使用单独的映射表来完成此操作。

如果您不想覆盖标识符的默认分配,则必须在加载期间捕获它们。为此,Oracle在PL / SQL中为returning提供了insert子句。我不确定SQL Server。也可以通过在B上使用触发器插入单独的映射表或更新A中的列来实现此目的。虽然这可能会大大减慢您的负载。

如果没有别的,您可以在B中创建其他列以在加载期间保存A的键,然后将映射查询到单独的表中,然后删除多余的列。

我希望有所帮助。

答案 1 :(得分:1)

准确问问自己需要原始钥匙。答案可能因源系统而异。这可能会导致您维护“源系统”列和“原始源键”列。后者可能需要是逗号分隔的原始密钥列表。

或者,您可能会发现自己从未真正需要回映,所以不需要保留任何内容。