具有标识列的多个链接表的 SSIS 数据迁移



我的问题与数据迁移有关。我在SQL的临时表中有大量数据,我正在执行一项任务,将数据迁移到目标SQL服务器。目标数据模型与暂存略有不同。

下面是一个例子: 在临时数据库中,有一个雇主表,如下所示: | Name | Mail Address | Mail City | Physical Address | Physical City | | ------ | ------------ | --------- | ---------------- | ------------- | | Emp1 | 123 Street | City 1 | 456 Avenue | City 1 | | Emp2 | 999 Street | City 1 | 456 Avenue | City 1 |

在目标数据库中,有三个表,如下所示:

  1. 雇主(EmpID 是身份字段( | EmpID | Emp Name | |------ | -------- | | 1 | Emp1 | | 2 | Emp2 |

  2. 地址(添加 ID 是标识字段( | AddID | AddressLine | Address City | | ----- | ----------- | ------------ | | 1 | 123 Street | City 1 | | 2 | 456 Avenue | City 1 | | 3 | 999 Street | City 1 | | 4 | 456 Avenue | City 1 |

  3. EmployerAddressMapping(EmpAddID 是身份,AddID 和 EmpID 是外键( | EmpAddID | EmpID | AddID | AddFlag | | -------- | ----- | ----- | ------- | | 1 | 1 | 1 | M | | 2 | 1 | 2 | P | | 3 | 2 | 3 | M | | 4 | 2 | 4 | P |

我想使用 SSIS 迁移数据。我已经使用简单的数据流任务迁移了雇主表。但是现在由于标识字段和外键关系,我很难迁移其余表。特别是对于地址表,其中不同雇主可能有重复的记录,因此很难先插入所有地址,然后通过查找新插入的地址来管理链接。

SSIS中有什么方法可以实现这一点吗?

使用两个单独的 DFT 加载地址表。让以下两个作为加载它们的查询。在加载到目标之前,请确保有一个查找来检查相应的地址不存在,以避免重复 -

--Query 1 - Mailing Address
select  distinct 
[Mail Address]
,[Mail City]
from    dbo.Staging; 
--Query 2- Phsyical Address
select  distinct 
,[Physical Address]
,[Physical City]
from    dbo.Staging; 

正如您所说,雇主的地址可能重复,首先需要用唯一集填充地址表。

在用于填充雇主地址映射的第三个 DFT 中 -

  1. 从源中获取员工姓名和地址作为 OLE DB 源的一部分,如下所示 -

    选择名称 ,[邮件地址] ,[邮件城] ,"M"作为"添加标志" 来自 DBO。分期 全部联合 选择名称 ,[实际地址] ,[物理城市] ,"P"作为"添加标志" 来自 DBO。分期;

  2. 使用 Emp 名称查找 Emp 表并获取 Emp ID

  3. 获取
  4. 匹配的输出并获取 Emp Id。 使用地址详细信息查找地址并获取地址 ID。
  5. 将具有必填字段属性的详细信息加载到目标表中

当然,除此之外,请确保选取增量记录的业务逻辑已到位。

我看到这种方法的一个问题是依赖于 Emp Name 是唯一的。如果不是,则需要将源主键作为 Emp 表的一部分存在,如 Nick 所述。如果是,那么应该没问题

最新更新