SQL Server中使用DTS設計器進行數據轉移
轉移任務的步驟:
◆1. 新建目的數據庫NOrthwind_DTS
◆2. 激活DTS設計器
在Enterprise Manager上右擊數據轉換服務圖表->新建包,將彈出一個新的窗口。
◆3. 創建數據源與目的地
在第2步彈出的新窗口右側工具欄中找到Microsoft OLE DB Provider for SQL Server圖標,單擊,并在彈出的對話框的新建鏈接欄輸入Northwind,在數據庫(B)的下拉列表中選取Northwind選項。其他默認設置,確定。然后,以同樣的方法創建數據目的地,命名為Northwind_WH,其中數據庫(B)下拉列表選項中選取 Northwind_WH選項。
◆4. 轉移事實表
首先創建轉換數據任務:先單擊Northwind圖標,然后按住ctrl鍵再單擊Northwind_WH圖標,即同時選中第3步創建出來的Northwind圖標和Northwind_WH圖標,然后在工具欄上找到“轉換數據任務”工具按鈕,單擊即可以創建一個從Northwind數據源指向Northwind_WH數據目的地的指針,我們可以新建一個批注文本框,為這個指針命名“Sales事實表轉換數據任務”。
設置數據轉換任務:雙擊Sales事實表的轉換數據任務指針,在彈出的屬性對話框中單擊【源】標簽,在【描述(D):】中輸入“Sales事實表轉換數據任務”,然后選中【SQL查詢(S):】單選按鈕,并輸入一下語句:
select e.EmployeeID, p.ProductID, s.SupplierID,
c.CustomerID, o.OrderDate, od.UnitPrice,
Od.Quantity, od.Discount
from Orders o,[Order Details] od, Employees e,
Products p, Suppliers s, Customers c
where (o.OrderID = od.OrderID) and
(o.EmployeeID = e.EmployeeID) and
(o.CustomerID = c.CustomerID) and
(od.ProductId = p.ProductID) and
(p.SupplierID = s.SupplierID);
我們可以點擊“分析查詢”按鈕,檢查SQL語句的語法是否正確;也可以“預覽”查詢結果,以檢驗數據是否正確;單擊“生成查詢”即可激活查詢設計器,根據需要對剛才的SQL語句進行修改。
單擊【目的】標簽,然后單擊“創建”按鈕,即可激活一個包含SQL的對話框,我們將語句中的“新建表”修改成我們需要的表名“Sales”,并在最后添加一行:[Total] money NOT NULL。這時,DTS設計器已經為我們在Northwind_WH數據中新建了表Sales。
單擊【轉換】標簽,可以看到DTS設計器為我們指定的字段之間的轉換任務。我們希望將UnitPrice*(1.0-Discount)*Quantity存入Total字段,因此這里只需要對Total字段進行如下設置:
現在左側的“源”中選中Quantity、UnitPrice和Discount,然后選中右側“目的”的Total,選中之后,單擊“新建”按鈕,在彈出的對話框中選中ActiveX Script,點確定,將彈出轉換屬性對話框,點擊此對話框中的“屬性”按鈕,激活“ActiveX腳本轉換屬性窗口,然后在此窗口的左側“語言(L):”下拉列表中選中VB Script Language,修改右側的代碼如下:
Function Main()
DTSDestination('Total') =
DTSSource('UnitPrice')*DTSSource('Quantity')*(1.0-DTSSource('Discount'))
Main = DTSTransformStat_OK
End Function
在這里也可以點擊“分析”按鈕,以檢查轉換函數是否正確書寫。也可以“測試”并在測試中“查看結果”。最后,一路確定返回到“轉換數據任務屬性”對話框。
確定并完成設置,回到第一步的主窗口。
◆5.保存DTS轉換數據任務包,在保存的時候可以對此轉換數據任務做一些相應的設置。
◆6.執行包。與數據轉換相關的信息都存儲在包之內,我們可以在適當時間執行包以將數據加載進目標數據庫。包可以重復使用,可以包含一個以上的表轉換任務。如果希望每個一段時間后保能夠遞增式的將數據加載,則可以將時間或是其他的條件一并加入包內。
現在我們來執行剛才建立好的包,將數據從Northwind加載到Northwind_WH。在轉換數據任務下面的本地包目錄中找到剛才建立好的包的圖標,右鍵選取【執行包(X)】選項,按提示操作即可。