代码之家  ›  专栏  ›  技术社区  ›  Sarel Botha

在SSIS包中,如何插入主详细信息记录?

  •  4
  • Sarel Botha  · 技术社区  · 16 年前

    1. 插入后如何检索标识列的值?

    我是否需要在控制流级别使用Foreach循环来传输数据流任务中的父行,然后使用另一个Foreach循环来插入详细记录?

    3 回复  |  直到 16 年前
        1
  •  3
  •   madcolor    16 年前

    这里有一种方法。。

    创建类型为object的变量。

    创建一个“执行SQL任务”,获取源数据并将其加载到变量(ADO.NET)中。

    创建一个“ForEach循环容器”。

    您应该能够使用SCOPE_IDENTITY()在插入到主表后获取每个ID,并使用它插入到详细表中。

        2
  •  2
  •   John Saunders    16 年前

    我遇到过这个问题,规模更大一些(导入深度嵌套的XML)。我能够利用XML源的一个特性,即在主“表”中创建一个代理键,然后在“子”表中作为“外键”重复该代理键。

    其思想是允许每个“表”到达数据库中一个单独的暂存表。在处理完所有行之后,您可以使用这些“外键”进行任何最终处理,这些处理要求同时创建主行和明细行,即使是在事务中(如有必要)。

        3
  •  0
  •   Pat    8 年前

    迁移源中有ID字段的数据时,我经常使用的一种技术是在目标主表中有一个名为“OldID”的列。使用SSIS控件填充它,将原始id字段放入OldID中。然后是后续的SSIS控件对已填充的主记录执行查找,其中旧ID与源ID匹配,并以这种方式获取新创建的ID。