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