


SQL Server服務(wù)器的數(shù)據(jù)轉(zhuǎn)換服務(wù)
在企業(yè)采用SQL Server數(shù)據(jù)庫(kù)之前,可能采用了Excle或者M(jìn)Y SQL等數(shù)據(jù)庫(kù)。他們的格式不同,存儲(chǔ)的位置也不同。但是,管理者在決策的時(shí)候,可能需要用到各方面的數(shù)據(jù)。此時(shí),用戶就會(huì)遇到一個(gè)問(wèn)題,如何把這些不同 格式、不同地理位置的數(shù)據(jù)集中起來(lái)進(jìn)行分析呢?為了解決這個(gè)難題,SQL Server數(shù)據(jù)庫(kù)中提出了一種叫做DTS(數(shù)據(jù)轉(zhuǎn)換)的服務(wù)。通過(guò)這個(gè)工具,使得數(shù)據(jù)庫(kù)管理員可以將來(lái)自不同的源的數(shù)據(jù)(不同格式)提取、轉(zhuǎn)換甚至合并 到某個(gè)特定的目的(如SQL Server數(shù)據(jù)庫(kù)),以滿足統(tǒng)計(jì)分析的需要。
可以說(shuō),數(shù)據(jù)轉(zhuǎn)換服務(wù)所提供的一組工具能夠幫助數(shù)據(jù)庫(kù)管理員解決數(shù)據(jù)庫(kù)起初數(shù)據(jù)導(dǎo)入、數(shù)據(jù)合并分析等方面的問(wèn)題。具體的來(lái)說(shuō),它有如下幾個(gè)妙用。
一、導(dǎo)入導(dǎo)出數(shù)據(jù)。
在部署信息化項(xiàng)目的時(shí)候,比較頭痛的一個(gè)問(wèn)題就是基礎(chǔ)數(shù)據(jù)導(dǎo)入的問(wèn)題。現(xiàn)在大部分企業(yè)在實(shí)施信息化項(xiàng)目,如ERP項(xiàng)目時(shí),都一定有一定的信息化水平。 最簡(jiǎn)單的來(lái)說(shuō),至少可能已經(jīng)用Excle等辦公軟件來(lái)記錄一些信息,如產(chǎn)品信息或者客戶基本信息等。那么,在他們部署ERP系統(tǒng)的時(shí)候,若讓企業(yè)員工再一 條條的把信息輸入進(jìn)去,就會(huì)增加許多額外的工作量。據(jù)筆者了解,很多企業(yè)都是在原有資料的基礎(chǔ)上,進(jìn)行稍加修飾,如去掉一些不用的內(nèi)容或者修改一些不準(zhǔn)確 的信息后,直接導(dǎo)入到數(shù)據(jù)庫(kù)中。
但是,在導(dǎo)入的過(guò)程中,由于格式不兼容或者其他問(wèn)題,往往會(huì)導(dǎo)致導(dǎo)入的失敗。而利用普通的工具,如SQL Server自帶的導(dǎo)入工具,無(wú)法記錄這些錯(cuò)誤信息。利用這些工具在導(dǎo)入數(shù)據(jù)的時(shí)候,若遇到一條錯(cuò)誤就會(huì)終止導(dǎo)入進(jìn)程。如此數(shù)據(jù)庫(kù)管理員需要重新檢查數(shù)據(jù) 源(有時(shí)數(shù)據(jù)庫(kù)還不會(huì)提示哪條記錄出現(xiàn)了問(wèn)題)。這么導(dǎo)入數(shù)據(jù)的效率是非常低下的。
而數(shù)據(jù)轉(zhuǎn)換服務(wù)能夠幫助我們解決這個(gè)問(wèn)題。如數(shù)據(jù)轉(zhuǎn)換服務(wù)可以把文本格式的數(shù)據(jù)或者Excel文件中的數(shù)據(jù)導(dǎo)入到SQL Server數(shù)據(jù)庫(kù)中。最重要的是,如果這個(gè)原始的數(shù)據(jù)源中某條記錄有問(wèn)題的話,不會(huì)中斷整個(gè)導(dǎo)入進(jìn)程。在導(dǎo)入結(jié)束后,數(shù)據(jù)轉(zhuǎn)換服務(wù)會(huì)生成一份報(bào)告。在這 份報(bào)告中,會(huì)詳細(xì)記錄哪些記錄沒有成功導(dǎo)入以及可能遇到的問(wèn)題。如果記錄少的話,數(shù)據(jù)庫(kù)管理員只需要手工錄入即可;而數(shù)據(jù)多的話,數(shù)據(jù)庫(kù)管理員也可以分批 導(dǎo)入數(shù)據(jù),也把符合要求的記錄導(dǎo)入進(jìn)去;然后再根據(jù)導(dǎo)入報(bào)告去修改那些不符合格式的記錄。修改完成以后再繼續(xù)導(dǎo)入剩余的數(shù)據(jù)。
很明顯,通過(guò)這個(gè)數(shù)據(jù)轉(zhuǎn)換工具,導(dǎo)入不同格式的記錄,會(huì)便利許多。與此同時(shí),數(shù)據(jù)轉(zhuǎn)換服務(wù)還可以把SQL Server數(shù)據(jù)庫(kù)中的內(nèi)容導(dǎo)出到一些特定的對(duì)象中,如Excel表格中。
所以,數(shù)據(jù)轉(zhuǎn)換服務(wù)的導(dǎo)入導(dǎo)出數(shù)據(jù)功能,在一些大量數(shù)據(jù)的導(dǎo)入導(dǎo)出以及不同格式的數(shù)據(jù)源之間進(jìn)行對(duì)導(dǎo),具有很大的用途。如數(shù)據(jù)轉(zhuǎn)換服務(wù)可以將大容量的文本文件格式的記錄高速導(dǎo)入到SQL Server數(shù)據(jù)庫(kù)中,等等。
二、利用數(shù)據(jù)轉(zhuǎn)換規(guī)范導(dǎo)入數(shù)據(jù)的格式。
數(shù)據(jù)轉(zhuǎn)換服務(wù)允許數(shù)據(jù)庫(kù)管理員在數(shù)據(jù)導(dǎo)入到SQLServer數(shù)據(jù)庫(kù)中,在對(duì)原始數(shù)據(jù)沒有進(jìn)行更改的情況下,對(duì)需要導(dǎo)入的數(shù)據(jù)進(jìn)行一些格式方面的調(diào)整或者 利用一些函數(shù)進(jìn)行操作。如現(xiàn)在數(shù)據(jù)庫(kù)管理員需要從一份Excle表格中導(dǎo)入數(shù)據(jù),但是在Excle表格中有一列商品編號(hào),其是字符型數(shù)據(jù)。可是在SQL Server數(shù)據(jù)庫(kù)中,則要求為整數(shù)型數(shù)據(jù)。若沒有數(shù)據(jù)轉(zhuǎn)換工具幫忙的話,則數(shù)據(jù)庫(kù)管理員需要先在Excel表格中進(jìn)行格式轉(zhuǎn)換,然后再把轉(zhuǎn)換后的數(shù)據(jù)導(dǎo) 入到SQL Server數(shù)據(jù)庫(kù)中。而如果利用數(shù)據(jù)轉(zhuǎn)換服務(wù)導(dǎo)入數(shù)據(jù)的話,則在導(dǎo)入的過(guò)程中,就可以利用函數(shù)進(jìn)行數(shù)據(jù)類型的轉(zhuǎn)換,而不用修改原始的數(shù)據(jù)源。
再談一個(gè)自己遇到真實(shí)案例。一次筆者在給一個(gè)客戶導(dǎo)入基礎(chǔ)資料的時(shí)候,遇到了這一種情況。他們?cè)谑褂肧QL Server數(shù)據(jù)庫(kù)之前,采用的是ACCESS數(shù)據(jù)庫(kù)。在這個(gè)數(shù)據(jù)庫(kù)中有一個(gè)產(chǎn)品基本信息表,包含產(chǎn)品關(guān)鍵字、產(chǎn)品分類等等。當(dāng)需要把這個(gè)數(shù)據(jù)庫(kù)中的內(nèi)容 導(dǎo)入到SQL Server中時(shí),要根據(jù)產(chǎn)分類的不同,給產(chǎn)品編號(hào)加入不同的前綴。如產(chǎn)品為成品的,則在產(chǎn)品編號(hào)前加入P;如果產(chǎn)品為包裝材料的,則在原有的產(chǎn)品編號(hào)前 加入B;若產(chǎn)品的類別為零件的,則加入M等等。
此時(shí),筆者就沒有對(duì)原始的數(shù)據(jù)源進(jìn)行更改。而是利用DTS服務(wù)在把數(shù)據(jù)導(dǎo)入到SQL Server數(shù)據(jù)庫(kù)之前,利用相關(guān)的函數(shù),如字符型數(shù)據(jù)合并等函數(shù),進(jìn)行一些格式的調(diào)整。所以,數(shù)據(jù)轉(zhuǎn)換服務(wù)的一個(gè)好處,就是在不用更改原始數(shù)據(jù)源的情況 下,就可以規(guī)范需要導(dǎo)入的數(shù)據(jù)格式。這在異構(gòu)數(shù)據(jù)源相互導(dǎo)入中,非常有用。
另外一個(gè)朋友也遇到過(guò)類似的問(wèn)題。如他在給用戶導(dǎo)入庫(kù)存表的時(shí)候,也要進(jìn)行一些數(shù)據(jù)轉(zhuǎn)換。當(dāng)庫(kù)存數(shù)量大于等于0的時(shí)候,則導(dǎo)入的數(shù)值就是原來(lái)的庫(kù)存數(shù) 量。如果原始數(shù)據(jù)庫(kù)庫(kù)存數(shù)量小于0的時(shí)候,則導(dǎo)入的庫(kù)存數(shù)量就為0。筆者同事在導(dǎo)入的過(guò)程中,就簡(jiǎn)單的編寫了一個(gè)ActiveX腳本來(lái)實(shí)現(xiàn)這個(gè)需求。在這 個(gè)腳本中,可以利用IF等函數(shù)來(lái)進(jìn)行數(shù)據(jù)轉(zhuǎn)換,因?yàn)檫@些函數(shù)可以應(yīng)用到專門的轉(zhuǎn)換或者包含條件邏輯。從而可以把記錄根據(jù)不同的條件邏輯轉(zhuǎn)換為合適的數(shù)據(jù)或 者格式。
所以,在導(dǎo)入數(shù)據(jù)過(guò)程中,如果要對(duì)一些數(shù)據(jù)進(jìn)行格式或者其他方面的轉(zhuǎn)換,筆者就建議大家采用DTS來(lái)轉(zhuǎn)換數(shù)據(jù),并導(dǎo)入到數(shù)據(jù)庫(kù)中。
三、導(dǎo)入過(guò)程中復(fù)制數(shù)據(jù)庫(kù)對(duì)象。
若直接利用ODBC等工具把其他SQLServer數(shù)據(jù)庫(kù)中的數(shù)據(jù)導(dǎo)入到SQLServer數(shù)據(jù)庫(kù)中,只能夠?qū)霐?shù)據(jù),而無(wú)法復(fù)制數(shù)據(jù)庫(kù)表上的對(duì)象,如約束、索引、主鍵等等。而且,對(duì)于視圖、存儲(chǔ)過(guò)程、默認(rèn)值等基于基礎(chǔ)表的數(shù)據(jù)庫(kù)對(duì)象也無(wú)法導(dǎo)入進(jìn)去。
在SQL Server數(shù)據(jù)庫(kù)中,數(shù)據(jù)庫(kù)管理員可以通過(guò)數(shù)據(jù)庫(kù)對(duì)象復(fù)制任務(wù),將對(duì)象從數(shù)據(jù)庫(kù)的一個(gè)實(shí)例復(fù)制到另外一個(gè)。可以傳輸基本對(duì)象,也可以復(fù)制某些對(duì)象的定 義。如果選擇了某個(gè)對(duì)象,則復(fù)制對(duì)象任務(wù)將會(huì)自動(dòng)復(fù)制任何相關(guān)聯(lián)的對(duì)象,如表湖或者視圖等的功能。前提是這些被復(fù)制的對(duì)象在選定的對(duì)象上有外鍵約束。
但是,利用DTS服務(wù)在導(dǎo)入數(shù)據(jù)的同時(shí),還可以復(fù)制數(shù)據(jù)庫(kù)對(duì)象,可以傳輸諸如視圖、存儲(chǔ)過(guò)程、觸發(fā)器、規(guī)則、默認(rèn)值以及用戶自定義的數(shù)據(jù)類型。這是 ODBC等數(shù)據(jù)導(dǎo)入工具所無(wú)法實(shí)現(xiàn)的功能。若所要復(fù)制的數(shù)據(jù)庫(kù)對(duì)象比較多,數(shù)據(jù)庫(kù)管理員還可以通過(guò)腳本來(lái)復(fù)制這些數(shù)據(jù)庫(kù)對(duì)象。
復(fù)制數(shù)據(jù)庫(kù)對(duì)象在實(shí)際工作中很有作用,可以保障數(shù)據(jù)導(dǎo)入的一致性與完整性。如現(xiàn)在數(shù)據(jù)庫(kù)管理員要從其他數(shù)據(jù)庫(kù)導(dǎo)入客戶信息表。而客戶信息表中需要引用聯(lián)系 人信息表與地址信息表兩個(gè)表。也就是說(shuō),客戶信息表中有兩個(gè)字段是這兩個(gè)表的外鍵。那么通過(guò)復(fù)制對(duì)象作業(yè),只要復(fù)制了這張客戶信息表,則數(shù)據(jù)庫(kù)會(huì)自動(dòng)復(fù)制 與其相關(guān)的表或者其他數(shù)據(jù)庫(kù)對(duì)象。而不用數(shù)據(jù)庫(kù)管理員再手工的去導(dǎo)入其他相關(guān)聯(lián)的數(shù)據(jù)。
四、執(zhí)行一些自動(dòng)化的操作。
在數(shù)據(jù)庫(kù)管理中,數(shù)據(jù)庫(kù)管理員很希望數(shù)據(jù)庫(kù)能夠自動(dòng)收集信息并將信息發(fā)送到用戶指定的地點(diǎn)如郵件等等。在數(shù)據(jù)轉(zhuǎn)換任務(wù)中,就提供了一系列類似的工具,來(lái)簡(jiǎn)
化數(shù)據(jù)庫(kù)管理員的工作。如在DTS組套種,有一個(gè)發(fā)送郵件的工具。
通過(guò)相關(guān)的設(shè)置,數(shù)據(jù)庫(kù)會(huì)在包成功或者失敗的時(shí)候自動(dòng)發(fā)送一個(gè)電子郵件給數(shù)據(jù)庫(kù)管理員,以提醒他作業(yè)是成功還是失敗。并且會(huì)附上比較詳細(xì)的信息,以便于數(shù)
據(jù)庫(kù)管理員進(jìn)行后續(xù)的操作。
數(shù)據(jù)轉(zhuǎn)換功能中,還包含了一個(gè)執(zhí)行包任務(wù),是的一個(gè)包運(yùn)行另一個(gè)作為包步驟。這可以讓我們的工作更加的自動(dòng)化。如在數(shù)據(jù)庫(kù)導(dǎo)入過(guò)程中,我們可以通過(guò)包運(yùn)行
計(jì)劃,把需要導(dǎo)入的數(shù)據(jù)表一步步按順序?qū)懭雸?zhí)行包計(jì)劃中。而讓數(shù)據(jù)庫(kù)在比較空閑的時(shí)候,自動(dòng)按序?qū)霐?shù)據(jù)。而數(shù)據(jù)庫(kù)管理員不用在旁邊指揮。
可見,數(shù)據(jù)轉(zhuǎn)換服務(wù)是功能很強(qiáng)的一項(xiàng)服務(wù)。在數(shù)據(jù)導(dǎo)入與轉(zhuǎn)換的過(guò)程中,筆者首推這個(gè)工具。特別是在數(shù)據(jù)量比較大的情況下,這個(gè)數(shù)據(jù)轉(zhuǎn)換服務(wù)確實(shí)能夠起到畫龍點(diǎn)睛的作用。
關(guān)鍵字:SQL Server、數(shù)據(jù)庫(kù)、轉(zhuǎn)換
新文章:
- CentOS7下圖形配置網(wǎng)絡(luò)的方法
- CentOS 7如何添加刪除用戶
- 如何解決centos7雙系統(tǒng)后丟失windows啟動(dòng)項(xiàng)
- CentOS單網(wǎng)卡如何批量添加不同IP段
- CentOS下iconv命令的介紹
- Centos7 SSH密鑰登陸及密碼密鑰雙重驗(yàn)證詳解
- CentOS 7.1添加刪除用戶的方法
- CentOS查找/掃描局域網(wǎng)打印機(jī)IP講解
- CentOS7使用hostapd實(shí)現(xiàn)無(wú)AP模式的詳解
- su命令不能切換root的解決方法
- 解決VMware下CentOS7網(wǎng)絡(luò)重啟出錯(cuò)
- 解決Centos7雙系統(tǒng)后丟失windows啟動(dòng)項(xiàng)
- CentOS下如何避免文件覆蓋
- CentOS7和CentOS6系統(tǒng)有什么不同呢
- Centos 6.6默認(rèn)iptable規(guī)則詳解