在企業中,各種資料分佈於各個場合中。如在企業採用SQL Server資料庫之前,可能採用了Excle或者MY SQL等資料庫。他們的格式不同,儲存的位置也不同。但是,管理者在決策的時候,可能需要用到各方面的資料。此時,使用者就會遇到一個問題,如何把這些不同格式、不同地理位置的資料集中起來進行分析呢?為瞭解決這個難題,SQL Server資料庫中提出了一種叫做DTS(資料轉換)的服務。通過這個工具,使得資料庫管理員可以將來自不同的源的資料(不同格式)提取、轉換甚至合并到某個特定的目的(如SQL Server資料庫),以滿足統計分析的需要。
可以說,資料轉換服務所提供的一組工具能夠協助資料庫管理員解決資料庫起初資料匯入、資料合併分析等方面的問題。具體的來說,它有如下四個妙用。
一、匯入匯出資料。
企業在部署資訊化項目的時候,比較頭痛的一個問題就是基礎資料匯入的問題。現在大部分企業在實施資訊化項目,如ERP項目時,都一定有一定的資訊化水平。最簡單的來說,至少可能已經用Excle等辦公軟體來記錄一些資訊,如產品資訊或者客戶基本資料等。那麼,在他們部署ERP系統的時候,若讓企業員工再一條條的把資訊輸入進去,就會增加許多額外的工作量。據筆者瞭解,很多企業都是在原有資料的基礎上,進行稍加修飾,如去掉一些不用的內容或者修改一些不準確的資訊後,直接匯入到資料庫中。
但是,在匯入的過程中,由于格式不相容或者其他問題,往往會導致匯入的失敗。而利用普通的工具,如SQL Server內建的匯入工具,無法記錄這些錯誤資訊。利用這些工具在匯入資料的時候,若遇到一條錯誤就會終止匯入進程。如此資料庫管理員需要重新檢查資料來源(有時資料庫還不會提示哪條記錄出現了問題)。這麼匯入資料的效率是非常低下的。
而資料轉換服務能夠協助我們解決這個問題。如資料轉換服務可以把文字格式設定的資料或者Excel檔案中的資料匯入到SQL Server資料庫中。最重要的是,如果這個原始的資料來源中某條記錄有問題的話,不會中斷整個匯入進程。在匯入結束後,資料轉換服務會產生一份報告。在這份報告中,會詳細記錄哪些記錄沒有成功匯入以及可能遇到的問題。如果記錄少的話,資料庫管理員只需要手工錄入即可;而資料多的話,資料庫管理員也可以分批匯入資料,也把符合要求的記錄匯入進去;然後再根據匯入報告去修改那些不符合格式的記錄。修改完成以後再繼續匯入剩餘的資料。
很明顯,通過這個資料轉換工具,匯入不同格式的記錄,會便利許多。與此同時,資料轉換服務還可以把SQL Server資料庫中的內容匯出到一些特定的對象中,如Excel表格中。
所以,資料轉換服務的匯入匯出資料功能,在一些大量資料的匯入匯出以及不同格式的資料來源之間進行對導,具有很大的用途。如資料轉換服務可以將大容量的文字檔格式的記錄高速匯入到SQL Server資料庫中,等等。
二、利用資料轉換規範匯入資料的格式。
資料轉換服務允許資料庫管理員在資料匯入到SQLServer資料庫中,在對未經處理資料沒有變更的情況下,對需要匯入的資料進行一些格式方面的調整或者利用一些函數進行操作。如現在資料庫管理員需要從一份Excle表格中匯入資料,但是在Excle表格中有一列商品編號,其是字元型資料。可是在SQL Server資料庫中,則要求為整數型資料。若沒有資料轉換工具幫忙的話,則資料庫管理員需要先在Excel表格中進行格式轉換,然後再把轉換後的資料匯入到SQL Server資料庫中。而如果利用資料轉換服務匯入資料的話,則在匯入的過程中,就可以利用函數進行資料類型的轉換,而不用修改原始的資料來源。
筆者再談一個自己遇到真實案例。一次筆者在給一個客戶匯入基礎資料的時候,遇到了這一種情況。他們在使用SQL Server資料庫之前,採用的是ACCESS資料庫。在這個資料庫中有一個產品基本資料表,包含產品關鍵字、產品分類等等。當需要把這個資料庫中的內容匯入到SQL Server中時,要根據產分類的不同,給產品編號加入不同的首碼。如產品為成品的,則在產品編號前加入P;如果產品為封裝材料的,則在原有的產品編號前加入B;若產品的類別為零件的,則加入M等等。此時,筆者就沒有對原始的資料來源變更。而是利用DTS服務在把資料匯入到SQL Server資料庫之前,利用相關的函數,如字元型資料合併等函數,進行一些格式的調整。所以,資料轉換服務的一個好處,就是在不用更改未經處理資料源的情況下,就可以規範需要匯入的資料格式。這在異構資料來源相互匯入中,非常有用。
筆者另外一個同事也遇到過類似的問題。如他在給使用者匯入庫存表的時候,也要進行一些資料轉換。當庫存數量大於等於0的時候,則匯入的數值就是原來的庫存數量。如果未經處理資料庫庫存數量小於0的時候,則匯入的庫存數量就為0。筆者同事在匯入的過程中,就簡單的編寫了一個ActiveX指令碼來實現這個需求。在這個指令碼中,可以利用IF等函數來進行資料轉換,因為這些函數可以應用到專門的轉換或者包含條件邏輯。從而可以把記錄根據不同的條件邏輯轉換為合適的資料或者格式。
所以,在匯入資料過程中,如果要對一些資料進行格式或者其他方面的轉換,筆者就建議大家採用DTS來轉換資料,並匯入到資料庫中。
三、匯入處理程序中複製資料庫物件。
若直接利用ODBC等工具把其他SQLServer資料庫中的資料匯入到SQLServer資料庫中,只能夠匯入資料,而無法複製資料庫表上的對象,如約束、索引、主鍵等等。而且,對於視圖、預存程序、預設值等基於基礎資料表的資料庫物件也無法匯入進去。
在SQL Server資料庫中,資料庫管理員可以通過資料庫物件複製任務,將對象從資料庫的一個執行個體複製到另外一個。可以傳輸基本對象,也可以複製某些對象的定義。如果選擇了某個對象,則複製對象任務將會自動複製任何相關聯的對象,如表湖或者視圖等的功能。前提是這些被複製的對象在選定的對象上有外鍵約束。
但是,利用DTS服務在匯入資料的同時,還可以複製資料庫物件,可以傳輸諸如視圖、預存程序、觸發器、規則、預設值以及使用者自訂的資料類型。這是ODBC等資料匯入工具所無法實現的功能。若所要複製的資料庫物件比較多,資料庫管理員還可以通過指令碼來複製這些資料庫物件。
複製資料庫物件在實際工作中很有作用,可以保障資料匯入的一致性與完整性。如現在資料庫管理員要從其他資料庫匯入客戶資訊表。而客戶資訊表中需要引用連絡人資訊表與地址資訊表兩個表。也就是說,客戶資訊表中有兩個欄位是這兩個表的外鍵。那麼通過複製對象作業,只要複製了這張客戶資訊表,則資料庫會自動複製與其相關的表或者其他資料庫物件。而不用資料庫管理員再手工的去匯入其他相關聯的資料。
四、執行一些自動化的操作。
在資料庫管理中,資料庫管理員很希望資料庫能夠自動收集資訊並將資訊發送到使用者指定的地點如郵件等等。在資料轉換任務中,就提供了一系列類似的工具,來簡化資料庫管理員的工作。如在DTS組套種,有一個發送郵件的工具。 通過相關的設定,資料庫會在包成功或者失敗的時候自動發送一個電子郵件給資料庫管理員,以提醒他作業是成功還是失敗。並且會附上比較詳細的資訊,以便於資料庫管理員進行後續的操作。
資料轉換功能中,還包含了一個執行包任務,是的一個包運行另一個作為包步驟。這可以讓我們的工作更加的自動化。如在資料庫匯入處理程序中,我們可以通過包運行計劃,把需要匯入的資料表一步步按順序寫入執行包計劃中。而讓資料庫在比較閒置時候,自動按序匯入資料。而資料庫管理員不用在旁邊指揮。
可見,資料轉換服務是功能很強的一項服務。在資料匯入與轉換的過程中,筆者首推這個工具。特別是在資料量比較大的情況下,這個資料轉換服務確實能夠起到畫龍點睛的作用。