石曉春,吳 磊,區(qū)鉅照,邱宏華
(1.廣東省國(guó)土資源測(cè)繪院,廣東 廣州510500)
在國(guó)土資源信息化建設(shè)過(guò)程中,原有的地籍管理數(shù)據(jù)庫(kù)系統(tǒng)累積了大量的地籍?dāng)?shù)據(jù),主要包括土地調(diào)查、土地登記、土地分等定級(jí)估價(jià)、土地統(tǒng)計(jì)、地籍檔案管理等[1]。然而,隨著計(jì)算機(jī)技術(shù)的發(fā)展,軟硬件環(huán)境的不斷更新,原有系統(tǒng)不能滿足業(yè)務(wù)工作提出的新要求,這使得相應(yīng)的數(shù)據(jù)庫(kù)內(nèi)容也要不斷地更新,并且新數(shù)據(jù)庫(kù)必須接納舊數(shù)據(jù)庫(kù)的數(shù)據(jù)。因此,將原有數(shù)據(jù)庫(kù)系統(tǒng)中的海量數(shù)據(jù)遷移到新的數(shù)據(jù)庫(kù)中,是目前數(shù)據(jù)庫(kù)管理的重要問(wèn)題。國(guó)內(nèi)外已有不少學(xué)者對(duì)數(shù)據(jù)遷移工作開展了廣泛的研究[2-7],本文立足于當(dāng)前地籍檔案數(shù)據(jù)管理的需要,研究了數(shù)據(jù)庫(kù)遷移的可行性和應(yīng)用方案,確保遷移后數(shù)據(jù)準(zhǔn)確可靠。
數(shù)據(jù)遷移指的是將原系統(tǒng)的數(shù)據(jù)進(jìn)行提?。‥xtraction)、轉(zhuǎn)換(Transformation),并裝載(Loading)到新系統(tǒng)中的過(guò)程[8]。數(shù)據(jù)遷移主要分為2個(gè)過(guò)程,一個(gè)是模式轉(zhuǎn)換,另一個(gè)是數(shù)據(jù)轉(zhuǎn)換,分別對(duì)應(yīng)于結(jié)構(gòu)對(duì)比和數(shù)據(jù)清理及規(guī)范化[9]。
模式轉(zhuǎn)換是對(duì)比新舊系統(tǒng)數(shù)據(jù)庫(kù)的表結(jié)構(gòu)及數(shù)據(jù)字典,找出它們之間的映射關(guān)系,并且制定新舊數(shù)據(jù)的轉(zhuǎn)換規(guī)則。
一般情況下,原有數(shù)據(jù)庫(kù)中數(shù)據(jù)不是直接提取出來(lái)就導(dǎo)入到目標(biāo)數(shù)據(jù)庫(kù)的,而是需要一系列的變換、運(yùn)算,才能成為目標(biāo)數(shù)據(jù)庫(kù)中數(shù)據(jù)。數(shù)據(jù)轉(zhuǎn)換是將原有數(shù)據(jù)庫(kù)中的數(shù)據(jù)按照一定的規(guī)則,清理轉(zhuǎn)換,然后填充到目標(biāo)數(shù)據(jù)庫(kù)中,產(chǎn)生目標(biāo)數(shù)據(jù)庫(kù)所需要數(shù)據(jù)的過(guò)程。
廣東省某市國(guó)土資源局自1986年初始登記發(fā)證至今,共130多萬(wàn)份地籍發(fā)證資料。2000年該市使用智能土地登記業(yè)務(wù)系統(tǒng)(舊數(shù)據(jù)庫(kù))存儲(chǔ)地籍資料,系統(tǒng)使用SQL Server 2000數(shù)據(jù)庫(kù)存儲(chǔ)了地籍登記的信息數(shù)據(jù)。目前該系統(tǒng)存在較多信息不全、信息錯(cuò)誤、信息缺失等相關(guān)問(wèn)題。2007年該市開發(fā)并使用了電子政務(wù)系統(tǒng)(新數(shù)據(jù)庫(kù)),使用Oracle數(shù)據(jù)庫(kù),但由于多種原因,舊數(shù)據(jù)庫(kù)仍繼續(xù)使用,因而存在2個(gè)系統(tǒng)2套數(shù)據(jù)共存的現(xiàn)象,因此需要進(jìn)行數(shù)據(jù)遷移。以地籍檔案數(shù)據(jù)庫(kù)中檔案登記業(yè)務(wù)為例,舊數(shù)據(jù)庫(kù)有4個(gè)數(shù)據(jù)表,新數(shù)據(jù)庫(kù)有1個(gè)數(shù)據(jù)表,數(shù)據(jù)表之間通過(guò)關(guān)鍵字進(jìn)行關(guān)聯(lián)。數(shù)據(jù)表字段對(duì)比分析如表1所示。
表1 數(shù)據(jù)表字段分析表
本方案的目的是將舊數(shù)據(jù)庫(kù)的數(shù)據(jù)遷移到新數(shù)據(jù)庫(kù)中,在數(shù)據(jù)分析的基礎(chǔ)上,制定轉(zhuǎn)換規(guī)則,進(jìn)行數(shù)據(jù)轉(zhuǎn)換,對(duì)地籍歷史數(shù)據(jù)進(jìn)行整理和補(bǔ)充入庫(kù),并使之正常運(yùn)行。地籍?dāng)?shù)據(jù)庫(kù)遷移方案流程如圖1所示。
1)對(duì)舊數(shù)據(jù)庫(kù)的數(shù)據(jù)進(jìn)行預(yù)處理,并整理成與新數(shù)據(jù)庫(kù)表結(jié)構(gòu)相同的臨時(shí)數(shù)據(jù)庫(kù)。臨時(shí)數(shù)據(jù)庫(kù)主要用于舊數(shù)據(jù)庫(kù)的質(zhì)量檢查、修改,采用與新數(shù)據(jù)庫(kù)一致的表結(jié)構(gòu)。
圖1 數(shù)據(jù)庫(kù)遷移方案流程圖
2)將臨時(shí)數(shù)據(jù)庫(kù)轉(zhuǎn)換到新數(shù)據(jù)庫(kù)中。
3)數(shù)據(jù)庫(kù)檢查,包括關(guān)鍵字空值記錄檢查、完全重復(fù)記錄檢查、關(guān)鍵字相同其他字段不同記錄檢查、元數(shù)據(jù)檢查等[10]。
4)用程序自動(dòng)刪除完全相同記錄,根據(jù)檢查記錄表,查找檔案、核對(duì)資料,在線編輯后臺(tái)數(shù)據(jù)庫(kù)表記錄,經(jīng)測(cè)試運(yùn)行無(wú)誤,形成最終的數(shù)據(jù)庫(kù)成果。
盡管數(shù)據(jù)遷移并不涉及復(fù)雜的系統(tǒng)開發(fā),但是依舊面臨很多問(wèn)題。本文對(duì)廣東省某市國(guó)土資源局地籍檔案數(shù)據(jù)遷移實(shí)際過(guò)程中存在的問(wèn)題進(jìn)行了總結(jié),并結(jié)合實(shí)際情況尋找解決方法。
為了解決數(shù)據(jù)遷移過(guò)程中地籍檔案數(shù)據(jù)庫(kù)變更記錄表中數(shù)據(jù)冗余的問(wèn)題,對(duì)表的記錄進(jìn)行整理。首先根據(jù)變更記錄表的ID字段值(變更次數(shù)),在變更記錄字段(BGJL)值后面追加相應(yīng)的分號(hào)“;”數(shù),然后刪除表中的ID字段,接著把4個(gè)關(guān)鍵字值相同的記錄進(jìn)行合并。
1)ID字段值處理。
update 變更記錄表 t set t. 變更記錄 = t. 變更記錄|| ';' where t.ID = '1';
update 變更記錄表 t set t. 變更記錄 = t. 變更記錄|| ';;' where t.ID = '2';
…
2)變更記錄字段(BGJL)值合并。
create or replace function str_list ( 關(guān)鍵字(變量) in varchar2)
Return varchar
Is
str_list varchar2(4000) default null;begin
for x in (select 變更記錄 from 變更記錄表 where變更記錄表.關(guān)鍵字 = 關(guān)鍵字(變量)) loop
str_list := str_list||to_char(x. 變更記錄);
end loop;
return str_list;
end;
create table 新變更記錄表as select T. 關(guān)鍵字,str_list(T. 關(guān)鍵字) from變更記錄表t group by t.關(guān)鍵字
為了解決不同數(shù)據(jù)表的合并問(wèn)題,本文以4個(gè)關(guān)鍵字為關(guān)聯(lián),通過(guò)左連接技術(shù)將“變更記錄”、“建設(shè)用地面積”、“農(nóng)用地面積”等數(shù)據(jù)表整理到“臨時(shí)數(shù)據(jù)庫(kù)”中,進(jìn)而轉(zhuǎn)換到新數(shù)據(jù)庫(kù),經(jīng)檢查修改后形成數(shù)據(jù)庫(kù)成果。
select table1.column,table2.column
from table1 left join table2 on table1.column1 =table2.column2;
在舊數(shù)據(jù)庫(kù)系統(tǒng)中的數(shù)據(jù)遷移到新數(shù)據(jù)庫(kù)的過(guò)程中,遷移操作要保證數(shù)據(jù)的安全和一致。先要對(duì)系統(tǒng)的數(shù)據(jù)結(jié)構(gòu)、數(shù)據(jù)關(guān)系、數(shù)據(jù)表之間的關(guān)聯(lián)做深入的分析和全面的了解,再根據(jù)系統(tǒng)的實(shí)際情況制定合適的方案,并進(jìn)行多次測(cè)試,以確定數(shù)據(jù)能安全、完整、一致、無(wú)損地遷移到新數(shù)據(jù)庫(kù)中。本文在研究數(shù)據(jù)遷移理論的基礎(chǔ)上,結(jié)合廣東省某市地籍檔案數(shù)據(jù)遷移的實(shí)例,對(duì)數(shù)據(jù)遷移進(jìn)行了實(shí)踐,對(duì)數(shù)據(jù)遷移過(guò)程中遇到的問(wèn)題進(jìn)行了總結(jié),并提出了解決方法。
數(shù)據(jù)遷移過(guò)程中不但包含具體的技術(shù)問(wèn)題,而且還涉及到系統(tǒng)的業(yè)務(wù)問(wèn)題,只有深入了解2個(gè)系統(tǒng)的業(yè)務(wù)邏輯,才能正確地完成數(shù)據(jù)遷移工作。
[1]張新長(zhǎng), 唐力明. 地籍管理數(shù)據(jù)庫(kù)信息系統(tǒng)研究[M]. 北京:科學(xué)出版社, 2009
[2]Mark E. Williams, Gary R. Consolazio, Marc I. Hoit. Data Storage and Extraction in Engineering Software using XML[J].Advances in Engineering Software, 2005, 36(11): 709-719
[3]Joachim Biskup, David W. Embley. Extracting Information from Heterogeneous Information Sources using Ontologically Specified Target Views[J]. Information Systems, 2003, 28(3):169-212
[4]Joseph Fong, San Kuen Cheung. Translating Relational Schema into XML Schema Definition with Data Semantic Preservation and XSD Graph[J]. Information and Software Technology, 2005,47(7): 437-462
[5]宋鵬, 廉繼紅. ETL技術(shù)在復(fù)雜數(shù)據(jù)遷移項(xiàng)目中的應(yīng)用[J].西安工程大學(xué)學(xué)報(bào), 2008(4): 493-498
[6]李永良. 數(shù)據(jù)遷移在新舊系統(tǒng)中切換[J].中國(guó)計(jì)算機(jī)用戶,2003,35: 45-46
[7]姜倩, 武桂香, 管鳳旭. 異構(gòu)數(shù)據(jù)庫(kù)間的動(dòng)態(tài)數(shù)據(jù)遷移[J].應(yīng)用科技,2005(32): 43-45
[8]Lilian Hobbs, Susan Hillson and Shilpa Lawande, et al. Loading Data into the Warehouse[J].Oracle 10g Data Warehousing, 2005,15(2): 155-253
[9]陳永亮. Oracle環(huán)境下數(shù)據(jù)遷移技術(shù)研究與實(shí)現(xiàn)[D]. 北京:北方工業(yè)大學(xué),2011
[10]史秋晶, 李羽薈. 城鎮(zhèn)地籍GIS建庫(kù)的質(zhì)量控制及檢查[J].地理空間信息, 2010, 8(4):158-161