0

我有一个包含多级父子关系记录的源文件。例子:

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

现在我必须将这些记录加载到目标表中,如下所示的标识列。

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 ?
4

1 回答 1

0

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

如果是这样:

  1. 添加两列SourceIdSourceParentId做你的Destination
  2. 在数据流存储NULL在目标ParentIDIDParentID源中SourceIdSourceParentId分别在和。在此步骤之后,您的目标表应类似于:
    ID ParentID 名称 SourceId SourceParentId
    1 空 山姆 A1 空
    2 NULL 斯里 B1 NULL
    3 NULL 尼克 A2 A1
    4 NULL Sree A2 A1
    5 NULL 尼什 A3 A2
    6 空拉吉 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.
于 2012-10-05T15:33:14.127 回答