2012-07-28 25 views
2

我從與送貨地址相結合BillingAddress架構重構我的數據庫的用戶對象:SSIS遷移:拆一個記錄到多個表

[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, 

重構爲一個表用戶和綁定地址的單獨的表由外鍵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導入記錄簡化用戶對象,然後創建2條地址記錄;一個是航運信息,另一個是航運信息?

我想保留現有的ID密鑰。

THX

回答

1
  1. 組播源數據。
  2. 將Derived Column組件添加到每個輸出流。在你的想法中,指定一個作爲「帳單地址」流,一個作爲「發送地址」流。
  3. 添加一個名爲「Type」的新列,分別硬編碼爲「Billing」和「Shipping」。
  4. 將一個目標組件添加到每個指向您的地址表的流中。
  5. 地圖每個數據流在相應的列(即結算城市到城市中的「賬單地址」流,ShippingCountry在「收貨地址」國家流等)