SSIS中一个源文件的多级父子记录

时间:2012-10-05 13:33:40

标签: sql sql-server ssis

我有一个Source文件,其中包含多级中的父子关系记录。 示例:

ID  ParentID    Name
A1  NULL        Sam
B1  NULL        Sri
A2  A1      Nick
B2  B1      Sree
A3  A2      Nish
A4  A3      Raj

说明:

A1 --> A2 --> A3 --> A4

A1 --> Parent of A2
A2 -->Parent of A3
A3 --> Parent of A4

B1-->B2

B1 --> Parent of B2

现在我必须使用Identity列将这些记录加载到Destination表中,如下所示。

ID  ParentID     Name
1   NULL        Sam
2   NULL        Sri
3   1       Nick
4   2       Sree
5   3       Nish
6   5       Raj

现在的问题是,没有固定的水平(关系有多深)。

-   Is there any way to load in one go all records ?

1 个答案:

答案 0 :(得分:0)

您可以在目标表中添加其他列吗?

如果是这样的话:

  1. 添加两列SourceIdSourceParentId执行Destination
  2. 分别在NULLParentID的来源的目标ID以及ParentIDSourceId中的数据流存储SourceParentId。完成此步骤后,您的目标表应类似于:
    ID  ParentID Name SourceId SourceParentId
    1   NULL     Sam  A1       NULL
    2   NULL     Sri  B1       NULL
    3   NULL     Nick A2       A1
    4   NULL     Sree A2       A1
    5   NULL     Nish A3       A2
    6   NULL     Raj  A4       A3
    
  3. Execute SQL Task执行目标后跟SQL:
    
    update dest set [ParentID] = src.ID
    from [dbo].[Destination] dest inner join [dbo].[Destination] src 
    on dest.[SourceParentId] = src.[SourceId]
    
    这将更新您的ParentID