程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> SqlServer數據庫 >> 關於SqlServer >> ETL學習筆記之三:MS SQL DTS

ETL學習筆記之三:MS SQL DTS

編輯:關於SqlServer
對於MS SQL-Server的DTS,在使用MS SQL-Server2000時,有最基本的接觸,但僅限時簡單的數據導入/導出。當開始了解ETL時,才發現DTS原來就是ETL的應用之一。
    先不談論DTS的好壞,但它至少MS產品的特點,易學,易用。所以,要了解ETL的應用,從DTS開始,在我看來,是個不錯的選擇。我只是學習,所以我沒 有能耐去評價它,下面,只能講DTS的功能一一列舉出來,可能這些與SQL-Server的聯機幫助有些重復,但對我來說,是一個加深記憶的方法。

    一:概念
    自完全不同源的數據析取、轉換並合並到單個或多個目的。主要應用於企業數據倉庫的數據抽取過程,完成從源數據庫/文件到數據倉庫的抽取和轉換過程。 
    看看,這不就是ETL要做的事兒。

    二:特征 
    2.1:基於OLE DB,很方便從不同的數據源復制和轉換數據。 
    是了,MS總是首要支持自已的其它產品,所以,它選擇了最通用的Windows的標准。
    2.2:有圖形化設計器,也可通過編程二次開發。
    這也是MS的長項,並且能把其它的東西一股腦兒的集成進來。
    2.3:執行效率高於普通ADO(SQL)操作
    據說是這樣地,我做過簡單的比較,確實不是一個數量級,原理呢?估計可能有較多特殊處理,比如批量插入bcp,傳輸前的數據壓縮等技術……,當然,這只是我的猜測。 
    2.4:可調度。
    這對於Windows系統,那很容易了,可以利用現成的系統級調度。

    三:詳細 
    來說點詳細的東東,當然,這裡的詳細並不指全部,實際上,我也只能挑出比較有代表性的功能點列舉一下,要是全部,那還不如抄襲聯機幫助了。

    3.1:包——最小的可調度單元
    包是基本任務,由工作流連接而成。包可以嵌套(包中的單個任務可以是執行另一個已存在的包)。 
    包是調度的直接管理對象,嵌套包保證包任務的重用。

    3.2:任務——最小的工作流連接單元
    分為以下幾種任務:
    導出和導入數據任務、轉換任務、復制數據庫對象、郵件/消息發送、Transact-SQL 語句或 Microsoft ActiveX® 腳本執行包、采用COM自定義任務。
    其中,最常用的應該是普通轉換任務。這等同於ETL中的T。

    3.3: 數據連接——定義數據源和目的地
    分為以下幾種:
     標准數據庫(如 Microsoft SQL Server 2000、Microsoft Access 2000、Oracle、DBase、Paradox);與 ODBC 數據源的 OLE DB 連接;Microsoft Excel 2000 電子表格數據;Html 源;以及其它 OLE DB 提供程序
文件連接數據鏈接連接(比較特殊)
    注意:SQL-Server作為Windows應用產品,DTS自然也不支持Java。
    對於標准數據庫是最基本的應用,易於實現。文件連接涉及格式定義,還不算復雜。

    3.4:轉換——數據轉換
    數據轉換,指列進行,

有多種方式: 
    3.4.1:簡單復制方式。 
    3.4.2:簡單轉換(如,數據格式化,取字符串子串等……)
    3.4.3:ActiveX腳本(實際上是vbScript和JavaScript) 
    3.4.4:調用自定的COM對象進行轉換。 
    通常會采用一二方式。如果要將DTS集成到你的應用中,可以第三種方式。

    3.5:工作流
    工作流包括成功,失敗,完成。工作流支持腳本控制。可編程控制。 
    工作流方式對於純數據抽取意義不大,但是考慮到任務包含收發郵件,信息,上/下傳文件,那就有必要了。當然,你也可以將這些任務單獨提出到應用端執行,而不采用DTS中的任務。 

    3.6:元數據 
    元數據方式更多的留備擴展,最基礎的應用是用來預定義數據表。

    3.7:數據驅動的查詢任務——(一種特珠的轉換方式)
    一種很特殊的轉換方式,支持參數。這裡,單獨把它提出來,因為它不是那麼容易理解,我花了一些時間,才將其弄明白。
    3.7.1:根據源數據的特征決定之後的查詢方式(指增,刪,改,查詢操作)。 
    3.7.2:支持參數,參數通過定義綁定表來關聯,通過定義轉換腳本,可以計算出綁定列參數。
    3.7.3:轉換時可以定義批量處理。
    3.7.4:轉換支持多階段抽取,可以定義階段代碼,階段分為:行轉換,轉換失敗,插入成功,插入失敗,批處理完成,抽取完成。 
    此種應用異常復雜,應屬高級應用。簡單的看,當轉換任務需要根據數據源來確定動作,這是非常有用的。比如你的應用存在多表存儲,就可能根據表內的時間來確定之後的動作,達到數據分多表存儲的目的。 

    3.8: 查找查詢
    作為轉換數據任務和數據驅動的查詢任務的一種功能。
    查找查詢使您得以對源和目的之外的其它連接運行查詢和存儲過程。例如,通過使用查找查詢,可以在查詢過程中進行單獨的連接,並在目的表中包括來自連接的數據。 
    作為一種擴充功能,實現更復雜的查詢操作。

    3.9: 多任務支持事務處理
    除了順序執行,可以進行並行執行步驟,且支持檢查點回滾。 
    當然,任務的事務仍然依賴於數據源所在所據庫是否支持事務。一般情況下,順序執行已經可以滿足抽取需求。

    好了,不管對錯,還是說說我的看法:
    首先:DTS中抽取流程定義比較清晰,數據轉換功能豐富,可視的設計工具強大,有一定的可擴展性(COM定制,腳本支持)。
    但是:但學習下來,隱隱約約覺得它有MS產品的通病,就是大而全,如果進行小型應用的集成,它是很方便和夠用的,但如果要在大型項目中集成DTS,它提供的二次開發方式,就顯得有些散亂,缺少一個總體的框架指導。當然,這可能與它的定位有關。
    對了,我看的SQL-Sever2000的DTS,對於2005,我不知有哪些方面的改進。



  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved