一:概念
自完全不同源的數據析取、轉換並合並到單個或多個目的。主要應用於企業數據倉庫的數據抽取過程,完成從源數據庫/文件到數據倉庫的抽取和轉換過程。
看看,這不就是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,我不知有哪些方面的改進。