數據轉換服務是SQL Server數據庫中提供的一個非常強大的工具。在SQLServer中,數據轉換功能有一個圖形用戶接口,用戶可以在圖形界面中導入數據,并對數據進行相應的編輯。
另外,數據轉換服務還支持COM組件的編程接口。這也就是說,在前臺應用程序開發的時候,可以直接調用數據轉換服務。讓用戶通過前臺應用系統,而不用在后臺數據庫系統進行任何的操作,就可以把數據導入數據庫系統中去。在前臺對數據庫系統進行導入,有一個明顯的好處,就可以預先對數據的合法性進行檢查。如可以利用VB等腳本語言對數據進行檢驗、凈化和一定的轉換,以符合目的數據庫的需要。
如在員工信息表中的婚姻狀況字段,在Oracle數據庫系統中,可能是用0或者1來表示婚姻狀況。0表示未婚,1表示已婚。而在SQL Server數據庫中,則利用Y或者N來表示婚姻狀況。Y表示已婚,N表示未婚。在導入數據的時候,若直接把Oracle數據庫表中的數據導入到SQL Server數據庫中,因為婚姻狀況這個字段存儲的內容類型不同,所以,不能夠直接導。遇到這種情況的話,則就可以在導入數據之前,先利用腳本語言對數據類型進行驗證。若不符合要求的,則可以通過腳本語言對數據進行一定的轉換,把0轉換為N,把1轉換為Y等等。
所以,有時候程序員在開發前臺應用程序的時候,若要開發數據導入功能的話,我們都是建議采用這個數據轉換服務。不但有現成的接口,而且,還可以對數據進行驗證與一定程度的轉換。另外,數據轉換服務的數據導入效率非常的高。即使通過前臺程序調用,其性能也比其他方法在同等條件下,要高一個檔次。而且,隨著數據量的增加,數據轉換服務的優勢會越來越明顯。
不過,在前臺應用程序調用數據轉換服務的時候,需要注意。數據轉換服務提供的COM接口比較復雜,所以,前臺程序調用數據轉換服務的代碼也比較復雜。若再加上一些腳本語言的話,可能處理起來更加的繁瑣。故一般只有在大型系統上才會用到這個接口。若數據不多,否則不需要復雜驗證與轉換的話,利用這個接口是大刀小用,得不償失。
第四:異構數據庫之間的導入導出
雖然第二種、第三種方式都可以完成異構數據庫之間數據的導入導出作業。不過,在SQL Server中,還提供了另外一種解決方案。即直接在SQL Server數據庫中連接到其他類型的數據庫上,然后采用Select Into等語句實現數據的導入作業。
在SQL Server中,提供了兩個函數可以幫助我們實現對非SQL Server數據庫的連接。這兩個函數分別為Opendatesource與Openrowset。他們的功能基本相同,只是在細節上有所差異。
如Opendatesource這個函數至能夠打開源數據庫的表和視圖,而不能夠對其進行過濾。若用戶只想把源表中的部分數據導入到SQL Server數據庫的表中,則不能對源表直接進行過濾。過濾的動作需要在SQL Server數據庫中進行。而Openrowset這個函數,可以在打開對方數據庫的表或者視圖的時候,直接利用Where等條件限制語句對記錄進新過濾。為此,在實際應用中,還是Openrowset這個函數使用的頻率比較高。
不過由于其需要用戶寫復雜的參數,而且,又不能夠提供復雜的數據驗證功能,所以在實際工作中用的并不是很多。在一些小的應用系統中,偶爾還可以見到其的蹤影。在一些大的成熟的商業軟件中,很少采用這種方式,對數據進行導入。
有時候,選擇多了,用戶反而不知道如何下手。筆者平時最喜歡采用的是第二種處理方式。他比較直觀,而且,可以對數據進行成批的更改與整理。但是,其缺陷就是效率比較低,特別是Excle軟件對于處理大量記錄的時候,速度比較慢。若這種方式行不通的話,則筆者比較傾向于采用數據轉換的處理方式。這個操作起來雖然比較復雜,但是,其可以提供比較復雜的驗證,而且可以在圖形化的界面中對數據進行修改,同時效率也比較高。
文章來源于領測軟件測試網 http://www.kjueaiud.com/