SSIS迁移:将一条记录拆分为多个表

时间:2012-07-28 14:40:54

标签: ssis

我正在从一个将BillingAddress与送货地址相结合的模式中重构我的db的User对象:

[BillingFirstName] [nvarchar](50) NOT NULL,
[BillinglastName] [nvarchar](50) NOT NULL,
[BillingAddress] [nvarchar](100) NOT NULL,
[BillingCity] [nvarchar](100) NOT NULL,
[BillingZip] [varchar](16) NOT NULL,
[BillingState] [nvarchar](2) NOT NULL,
[shippingFirstName] [nvarchar](50) NULL,
[shippingLastName] [nvarchar](50) NULL,
[shippingAddress] [nvarchar](100) NULL,
[shippingCity] [nvarchar](100) NULL,
[shippingState] [nvarchar](2) NULL,
[shippingZip] [nvarchar](20) NULL,
[shippingPhone] [nvarchar](30) NULL,

重构为User的一个表,以及由外键绑定的地址的单独表Users.ID => Addresses.idUser

    CREATE TABLE [dbo].[Addresses](
[Id] [int] IDENTITY(1,1) NOT NULL,
[Type] [nchar](10) NOT NULL, // designates Billing or Shipping
[Formatted] [nchar](600) NOT NULL,
[Street] [nchar](100) NOT NULL,
[City] [nchar](100) NOT NULL,
[POBox] [nchar](50) NULL,
[Region] [nchar](50) NULL,
[PostalCode] [nchar](50) NULL,
[Country] [nchar](50) NULL,
[ExtendedAddress] [nchar](100) NULL,
[idUser] [int] NULL,

如何告诉SSIS将记录导入简化的User对象,然后创建2个地址记录;一个是发货信息,另一个是结算?

我想要保留现有的ID密钥。

THX

1 个答案:

答案 0 :(得分:1)

  1. 多播您的源数据。
  2. 将派生列组件添加到每个输出流。在您的心目中,将一个指定为“帐单地址”流,将一个指定为“送货地址”流。
  3. 添加名为“Type”的新列,分别硬编码为“Billing”和“Shipping”。
  4. 将目标组件添加到指向地址表的每个流中。
  5. 在每个流中映射相应的列(即BillingCity到“帐单邮寄地址”流中的城市,ShippingCountry到“送货地址”流中的国家/地区等)。