專利名稱:一種面向結(jié)構(gòu)的數(shù)據(jù)遷移的方法及系統(tǒng)的制作方法
技術(shù)領(lǐng)域:
本發(fā)明是關(guān)于一種數(shù)據(jù)遷移的方法及系統(tǒng),尤其指面向結(jié)構(gòu)的數(shù)據(jù)遷移方法及系統(tǒng)。
背景技術(shù):
在信息化建設(shè)過程中,原有的信息系統(tǒng)不斷被功能更強(qiáng)大的新系統(tǒng)所取代。在新舊系統(tǒng)的切換過程中,必然要面臨一個(gè)數(shù)據(jù)遷移的問題。有的舊系統(tǒng)從啟用到被新系統(tǒng)取代,在其使用期間往往積累了大量珍貴的歷史數(shù)據(jù),其中許多歷史數(shù)據(jù)都是新系統(tǒng)順利啟用所必須的。數(shù)據(jù)遷移,就是將這些歷史數(shù)據(jù)進(jìn)行過濾、轉(zhuǎn)換,并裝載到新系統(tǒng)中的過程。數(shù)據(jù)遷移主要適用于一套舊系統(tǒng)切換到另一套新系統(tǒng),或多套舊系統(tǒng)切換到同一套新系統(tǒng)時(shí),需要將舊系統(tǒng)中的歷史數(shù)據(jù)轉(zhuǎn)換到新系統(tǒng)中的情況。
在現(xiàn)有的數(shù)據(jù)遷移工具產(chǎn)品中,能夠?qū)崿F(xiàn)數(shù)據(jù)的過濾、轉(zhuǎn)換、裝載等功能,但是由于新舊系統(tǒng)的數(shù)據(jù)結(jié)構(gòu)不完全相同,不能把舊系統(tǒng)中的代碼字段轉(zhuǎn)換為新系統(tǒng)中的代碼,或者在新系統(tǒng)中自動(dòng)生成代碼。因此,也不能在新系統(tǒng)中同時(shí)裝載主表數(shù)據(jù)及其子表數(shù)據(jù)。這樣,就必須事先對(duì)舊系統(tǒng)數(shù)據(jù)進(jìn)行處理,從而增加了數(shù)據(jù)遷移的難度和工作量。
針對(duì)上述問題,本發(fā)明提出了一種面向結(jié)構(gòu)的數(shù)據(jù)遷移方法及系統(tǒng),就是通過在模版中定義多層次的虛表及多層次的虛外鍵,定義遷移數(shù)據(jù)的結(jié)構(gòu)關(guān)系,通過數(shù)據(jù)遷移引擎自動(dòng)建立新系統(tǒng)中的代碼,向新系統(tǒng)中的主表及其子表裝載數(shù)據(jù),并自動(dòng)維護(hù)它們之間的關(guān)聯(lián)關(guān)系。
發(fā)明內(nèi)容
本發(fā)明的主要目的在于提供一種能夠進(jìn)行面向結(jié)構(gòu)的數(shù)據(jù)遷移方法及系統(tǒng)。能夠在把數(shù)據(jù)經(jīng)過過濾、轉(zhuǎn)換等操作后從數(shù)據(jù)源遷移到目標(biāo)數(shù)據(jù)庫中,并且遷移時(shí)能夠自動(dòng)維護(hù)新數(shù)據(jù)對(duì)字典的引用以及主表和子表的關(guān)系,從而維護(hù)了數(shù)據(jù)的結(jié)構(gòu)關(guān)系。并且對(duì)于Excel文件的數(shù)據(jù)源,允許一條數(shù)據(jù)數(shù)據(jù)記錄存儲(chǔ)在多行中。
本發(fā)明提供了一種面向結(jié)構(gòu)的數(shù)據(jù)遷移系統(tǒng),包括模版定義模塊、數(shù)據(jù)遷移引擎模塊、開發(fā)者應(yīng)用程序接口(API)。
模版定義模塊提供圖形用戶界面,供使用者定義數(shù)據(jù)遷移模版。定義模版包括要定義數(shù)據(jù)源,可以使用Excel文件或者數(shù)據(jù)庫作為數(shù)據(jù)源,進(jìn)行數(shù)據(jù)遷移時(shí)系統(tǒng)將從數(shù)據(jù)源中讀取數(shù)據(jù)。定義目標(biāo)數(shù)據(jù)庫,目標(biāo)數(shù)據(jù)庫時(shí)數(shù)據(jù)遷移的目的地,使用者必須提供訪問目標(biāo)數(shù)據(jù)庫所需的參數(shù),進(jìn)行數(shù)據(jù)遷移時(shí)系統(tǒng)將把數(shù)據(jù)存儲(chǔ)到目標(biāo)數(shù)據(jù)庫中。定義模版時(shí),還可以定義模版的開始事件和結(jié)束事件的事件處理程序。定義虛表,虛表定義了數(shù)據(jù)遷移的具體的源表和目標(biāo)表,在虛表中還可以添加虛字段、虛主鍵、虛外鍵和虛表,這樣就定義了數(shù)據(jù)的結(jié)構(gòu)關(guān)系,從而在數(shù)據(jù)遷移時(shí)由數(shù)據(jù)遷移引擎自動(dòng)維護(hù)目標(biāo)數(shù)據(jù)庫中的數(shù)據(jù)關(guān)系,同時(shí)還可以在開始事件、結(jié)束事件、定位下一記錄事件、記錄過濾事件中對(duì)數(shù)據(jù)進(jìn)行過濾、轉(zhuǎn)換或?qū)?shù)據(jù)遷移過程進(jìn)行控制。定義虛字段,虛字段是定義源表到目標(biāo)表的字段映射關(guān)系,虛字段也可以使用固定值作為數(shù)據(jù),也可以在數(shù)據(jù)過濾事件中對(duì)源字段數(shù)據(jù)進(jìn)行轉(zhuǎn)換。定義虛主鍵,虛主鍵標(biāo)明了虛表的主鍵字段,用于維護(hù)虛表及其下級(jí)虛表的關(guān)系。定義虛外鍵,虛外鍵定義了目標(biāo)表的外鍵字段所關(guān)聯(lián)到的字典表,并且通過在虛外鍵中增加虛外鍵字段定義了如何維護(hù)這種關(guān)聯(lián)關(guān)系,在虛外鍵中還可以定義下一級(jí)的虛外鍵,以便處理多層次關(guān)聯(lián)的數(shù)據(jù)結(jié)構(gòu)。在模版定義模塊中,還可以進(jìn)行系統(tǒng)參數(shù)設(shè)置,可以設(shè)置的參數(shù)包括包括每次提交的行數(shù)、Excel文件顯示的行數(shù)、Excel文件顯示的列數(shù)、是否截取源數(shù)據(jù)中的空格、是否把空字符串作為空值處理。
數(shù)據(jù)遷移引擎模塊,用于執(zhí)行數(shù)據(jù)遷移模版,把數(shù)據(jù)源中的數(shù)據(jù)按照數(shù)據(jù)模版定義的規(guī)則遷移到目標(biāo)數(shù)據(jù)庫中。數(shù)據(jù)遷移引擎能夠按順序執(zhí)行一個(gè)或多個(gè)虛表,按照虛表的定義從數(shù)據(jù)源中的源表中讀取數(shù)據(jù),遷移到目標(biāo)數(shù)據(jù)庫。在遷移過程中,自動(dòng)維護(hù)主表和子表的關(guān)系以及外鍵字段與其引用的字典的關(guān)系。同時(shí)在遷移過程中,還會(huì)執(zhí)行模版、虛表、虛字段、虛主鍵、虛外鍵字段中定義的事件處理程序,對(duì)源數(shù)據(jù)進(jìn)行過濾、轉(zhuǎn)換并且對(duì)數(shù)據(jù)遷移過程進(jìn)行控制。數(shù)據(jù)遷移引擎模塊可以在執(zhí)行數(shù)據(jù)遷移時(shí)顯示數(shù)據(jù)遷移的進(jìn)程,并且可以在數(shù)據(jù)遷移過程中隨時(shí)中止數(shù)據(jù)遷移過程。在數(shù)據(jù)遷移時(shí),根據(jù)系統(tǒng)參數(shù)每次提交的行數(shù)的設(shè)置值,進(jìn)行數(shù)據(jù)提交,如設(shè)置每次提交100行,則每遷移100行數(shù)據(jù)進(jìn)行一次提交,如果每次提交的行數(shù)設(shè)置為0,則數(shù)據(jù)遷移過程不進(jìn)行提交,僅用于測試使用。
開發(fā)者應(yīng)用程序接口(API),用于訪問數(shù)據(jù)源數(shù)據(jù),供使用者編寫數(shù)據(jù)遷移中的事件處理程序時(shí)使用,也可以從使用者的應(yīng)用程序中使用。使用者可以在自己編寫的程序中,調(diào)用開發(fā)者應(yīng)用程序接口,實(shí)現(xiàn)數(shù)據(jù)遷移的功能。在編寫數(shù)據(jù)遷移中的各種事件處理程序時(shí),可以通過開發(fā)者應(yīng)用程序接口訪問數(shù)據(jù)源數(shù)據(jù),對(duì)數(shù)據(jù)源數(shù)據(jù)進(jìn)行各種處理如過濾、轉(zhuǎn)換等。
圖1是本發(fā)明一種面向結(jié)構(gòu)的數(shù)據(jù)遷移的方法及系統(tǒng)的實(shí)施環(huán)境圖。
圖2是本發(fā)明一種面向結(jié)構(gòu)的數(shù)據(jù)遷移的方法及系統(tǒng)的功能模塊圖。
圖3是本發(fā)明一種面向結(jié)構(gòu)的數(shù)據(jù)遷移的方法及系統(tǒng)的模版定義模塊工作流程圖。
圖4是本發(fā)明一種面向結(jié)構(gòu)的數(shù)據(jù)遷移的方法及系統(tǒng)的數(shù)據(jù)遷移引擎的工作流程圖。
圖5是本發(fā)明一種面向結(jié)構(gòu)的數(shù)據(jù)遷移的方法及系統(tǒng)的開發(fā)者應(yīng)用程序接口的功能模塊圖。
具體實(shí)施例方式
參閱圖1所示,是本發(fā)明一種面向結(jié)構(gòu)的數(shù)據(jù)遷移的方法及系統(tǒng)的實(shí)施環(huán)境圖。該系統(tǒng)運(yùn)行在一客戶端計(jì)算機(jī)上,通過網(wǎng)絡(luò)與源數(shù)據(jù)庫服務(wù)器、源文件服務(wù)器、目標(biāo)數(shù)據(jù)庫服務(wù)器相連接。系統(tǒng)運(yùn)行時(shí)從源數(shù)據(jù)庫服務(wù)器或源文件服務(wù)器讀取數(shù)據(jù),通過網(wǎng)絡(luò)把數(shù)據(jù)存儲(chǔ)到目標(biāo)數(shù)據(jù)庫。
參閱圖2所示,是本發(fā)明一種面向結(jié)構(gòu)的數(shù)據(jù)遷移的方法及系統(tǒng)的功能模塊圖。系統(tǒng)由模版定義模塊、數(shù)據(jù)遷移引擎模塊、開發(fā)者應(yīng)用程序接口(API)組成。模版定義模塊提供圖形用戶界面,供使用者定義數(shù)據(jù)遷移模版。定義數(shù)據(jù)遷移模版,先要定義數(shù)據(jù)源和目標(biāo)數(shù)據(jù)庫,以及模版事件處理程序。定義數(shù)據(jù)源,可以使用Excel文件或者數(shù)據(jù)庫作為數(shù)據(jù)源,進(jìn)行數(shù)據(jù)遷移時(shí)系統(tǒng)將從數(shù)據(jù)源中讀取數(shù)據(jù)。定義目標(biāo)數(shù)據(jù)庫,目標(biāo)數(shù)據(jù)庫時(shí)數(shù)據(jù)遷移的目的地,使用者必須提供訪問目標(biāo)數(shù)據(jù)庫所需的參數(shù),進(jìn)行數(shù)據(jù)遷移時(shí)系統(tǒng)將把數(shù)據(jù)存儲(chǔ)到目標(biāo)數(shù)據(jù)庫中。模版定義模塊從數(shù)據(jù)源和目標(biāo)數(shù)據(jù)庫中讀取數(shù)據(jù)的結(jié)構(gòu),以便使用者定義模版中的虛表等。數(shù)據(jù)遷移引擎模塊,用于執(zhí)行數(shù)據(jù)遷移模版,把數(shù)據(jù)源中的數(shù)據(jù)按照數(shù)據(jù)模版定義的規(guī)則遷移到目標(biāo)數(shù)據(jù)庫中。數(shù)據(jù)遷移引擎能夠按順序執(zhí)行一個(gè)或多個(gè)虛表,按照虛表的定義從數(shù)據(jù)源中的源表中讀取數(shù)據(jù),遷移到目標(biāo)數(shù)據(jù)庫。開發(fā)者應(yīng)用程序接口(API),用于訪問數(shù)據(jù)源數(shù)據(jù),供使用者編寫數(shù)據(jù)遷移中的事件處理程序時(shí)使用,也可以在使用者編寫的程序中調(diào)用開發(fā)者應(yīng)用程序接口,實(shí)現(xiàn)數(shù)據(jù)遷移的功能。
參閱圖3所示,是本發(fā)明一種面向結(jié)構(gòu)的數(shù)據(jù)遷移的方法及系統(tǒng)的模版定義模塊工作流程圖。定義數(shù)據(jù)遷移模版,首先定義系統(tǒng)參數(shù),包括每次提交的行數(shù)、Excel文件顯示的行數(shù)、Excel文件顯示的列數(shù)、是否截取源數(shù)據(jù)中的空格、是否把空字符串作為空值處理。接著,定義數(shù)據(jù)源和目標(biāo)數(shù)據(jù)庫,數(shù)據(jù)源可以使Excel文件或者數(shù)據(jù)庫,數(shù)據(jù)源和目標(biāo)數(shù)據(jù)庫的數(shù)據(jù)結(jié)構(gòu)可以不相同,在使用Excel文件作為數(shù)據(jù)源時(shí),一條數(shù)據(jù)記錄可以存儲(chǔ)在多行中。定義數(shù)據(jù)遷移模版時(shí)還要定義模版的事件處理程序。下一步,定義虛表,包括指定數(shù)據(jù)源中的表作為源表或指定一個(gè)結(jié)構(gòu)化查詢(SQL)語句作為源表,指定目標(biāo)數(shù)據(jù)庫中的表作為目標(biāo)表,虛表是否遷移多行數(shù)據(jù),源表記錄的步長,編輯開始事件、結(jié)束事件、定位下一記錄事件、記錄過濾事件的處理程序。下一步,在虛表中定義虛字段,包括指定虛字段名稱、源字段、固定值及是否使用固定值、編輯數(shù)據(jù)過濾事件處理程序。下一步,在虛表中定義虛主鍵,包括指定名稱、源字段、編輯數(shù)據(jù)過濾事件處理程序。下一步,在虛表中定義虛外鍵,包括指定名稱、主表、主鍵、是否自動(dòng)新建。下一步,定義虛外鍵中的虛外鍵字段,包括指定主表字段、源字段、編輯數(shù)據(jù)過濾事件處理程序。定義完虛外鍵后,如果還需要定義下一級(jí)虛外鍵可以在虛外鍵中定義下一級(jí)虛外鍵。如果需要定義下一級(jí)虛表,可以在虛表中定義下一級(jí)虛表。
參閱圖4所示,是本發(fā)明一種面向結(jié)構(gòu)的數(shù)據(jù)遷移的方法及系統(tǒng)的數(shù)據(jù)遷移引擎的工作流程圖。首先,數(shù)據(jù)遷移引擎連接數(shù)據(jù)源和目標(biāo)數(shù)據(jù)庫。然后,開始依次遷移虛表,從數(shù)據(jù)源中讀取數(shù)據(jù)。下一步,按照虛字段的定義,把數(shù)據(jù)源數(shù)據(jù)存儲(chǔ)到目標(biāo)數(shù)據(jù)庫中,如果定義了數(shù)據(jù)過濾事件處理程序,則在存儲(chǔ)前調(diào)用該程序進(jìn)行處理。下一步,按照虛外鍵的定義,在目標(biāo)數(shù)據(jù)庫中查找外鍵引用的字典,如果相應(yīng)的字典不存在則根據(jù)虛外鍵中的虛外鍵字段自動(dòng)建立該字典數(shù)據(jù)。如果虛外鍵中包含下一級(jí)虛外鍵,則遷移該下一級(jí)虛外鍵。如果虛表中包含下一級(jí)虛表,則遷移該下一級(jí)虛表。遷移完所有指定的虛表后,斷開與數(shù)據(jù)源和目標(biāo)數(shù)據(jù)庫的連接。在遷移過程中,開始遷移和結(jié)束遷移時(shí)要執(zhí)行模版的開始和結(jié)束事件。在開始和結(jié)束虛表遷移時(shí)要執(zhí)行虛表的開始和結(jié)束時(shí)間。每次遷移一行數(shù)據(jù)時(shí),要執(zhí)行虛表的記錄過濾事件以決定是否遷移這一行數(shù)據(jù)。每次遷移一行數(shù)據(jù)之后,如果虛表的步長參數(shù)指定了要執(zhí)行定位下一記錄事件則執(zhí)行該事件,定位到下一行要進(jìn)行遷移的數(shù)據(jù)。在遷移需字段、虛主鍵和虛外鍵字段時(shí)要執(zhí)行它們的數(shù)據(jù)過濾事件。
參閱圖5所示,是本發(fā)明一種面向結(jié)構(gòu)的數(shù)據(jù)遷移的方法及系統(tǒng)的開發(fā)者應(yīng)用程序接口的功能模塊圖。開發(fā)者應(yīng)用程序接口由兩部分組成,TemplateEngine是訪問數(shù)據(jù)遷移引擎的接口,該接口提供三個(gè)功能OpenTemplate打開數(shù)據(jù)遷移模版;Start開始數(shù)據(jù)遷移;Stop停止數(shù)據(jù)遷移。Sheet是訪問數(shù)據(jù)源中數(shù)據(jù)表數(shù)據(jù)的接口,該接口提供getCellValue功能,用于讀取數(shù)據(jù)表中指定行和列的數(shù)據(jù)。
權(quán)利要求
1.一種面向結(jié)構(gòu)的數(shù)據(jù)遷移的系統(tǒng),能夠定義數(shù)據(jù)遷移的模版,并執(zhí)行數(shù)據(jù)從數(shù)據(jù)源到目標(biāo)數(shù)據(jù)庫的遷移,其特點(diǎn)在于,系統(tǒng)包括模版定義模塊,用于提供圖形用戶接口,使用者通過模版定義模塊定義數(shù)據(jù)遷移模版。數(shù)據(jù)遷移引擎模塊,用于執(zhí)行數(shù)據(jù)遷移模版,把數(shù)據(jù)源中的數(shù)據(jù)按照數(shù)據(jù)模版定義的規(guī)則遷移到目標(biāo)數(shù)據(jù)庫中。開發(fā)者應(yīng)用程序接口(API),用于訪問數(shù)據(jù)源數(shù)據(jù),供使用者編寫數(shù)據(jù)遷移中的事件處理程序時(shí)使用,也可以從使用者的應(yīng)用程序中使用。
2.一種面向結(jié)構(gòu)的數(shù)據(jù)遷移的方法,能夠定義數(shù)據(jù)遷移的模版,并執(zhí)行數(shù)據(jù)從數(shù)據(jù)源到目標(biāo)數(shù)據(jù)庫的遷移,其特征在于,包括以下步驟設(shè)置系統(tǒng)參數(shù),包括每次提交的行數(shù)、Excel文件顯示的行數(shù)、Excel文件顯示的列數(shù)、是否截取源數(shù)據(jù)中的空格、是否把空字符串作為空值處理;定義數(shù)據(jù)遷移模版;執(zhí)行數(shù)據(jù)遷移,根據(jù)使用者在數(shù)據(jù)遷移模版中選擇的虛表,自動(dòng)從源表中讀取數(shù)據(jù),按照虛表的定義把數(shù)據(jù)存放到目標(biāo)表中去,在執(zhí)行的過程中執(zhí)行使用者定義的各種事件處理程序;
3.如權(quán)利要求2所述的數(shù)據(jù)遷移方法,其特征在于,其中的定義數(shù)據(jù)遷移模版包括以下步驟定義數(shù)據(jù)源,可以使用Excel文件,或數(shù)據(jù)庫作為數(shù)據(jù)源;定義目標(biāo)數(shù)據(jù)庫,指定連接到數(shù)據(jù)庫的參數(shù);定義模版事件處理程序,包括定義開始事件和結(jié)束事件的處理程序。定義虛表,包括指定數(shù)據(jù)源中的表作為源表或指定一個(gè)結(jié)構(gòu)化查詢(SQL)語句作為源表,指定目標(biāo)數(shù)據(jù)庫中的表作為目標(biāo)表,虛表是否遷移多行數(shù)據(jù),源表記錄的步長,編輯開始事件、結(jié)束事件、定位下一記錄事件、記錄過濾事件的處理程序;在虛表中定義虛字段,指定虛字段名稱、源字段、固定值及是否使用固定值、編輯數(shù)據(jù)過濾事件處理程序;在虛表中定義虛外鍵,指定名稱、主表、主鍵、是否自動(dòng)新建;在虛外鍵中定義虛外鍵字段,指定主表字段、源字段、編輯數(shù)據(jù)過濾事件處理程序;在虛外鍵中定義下一級(jí)虛外鍵;在虛表中定義虛主鍵,指定名稱、源字段、編輯數(shù)據(jù)過濾事件處理程序;在虛表中定義下一級(jí)虛表,包括指定目標(biāo)表,虛表是否遷移多行數(shù)據(jù),源表記錄的步長,編輯開始事件、結(jié)束事件、定位下一記錄事件、記錄過濾事件的處理程序;
全文摘要
本發(fā)明的主要目的在于提供一種能夠進(jìn)行面向結(jié)構(gòu)的數(shù)據(jù)遷移方法及系統(tǒng)。能夠在把數(shù)據(jù)經(jīng)過過濾、轉(zhuǎn)換等操作后從數(shù)據(jù)源遷移到目標(biāo)數(shù)據(jù)庫中,并且遷移時(shí)能夠自動(dòng)維護(hù)新數(shù)據(jù)對(duì)字典的引用以及主表和子表的關(guān)系,從而維護(hù)了數(shù)據(jù)的結(jié)構(gòu)關(guān)系。一種面向結(jié)構(gòu)的數(shù)據(jù)遷移系統(tǒng),包括模版定義模塊、數(shù)據(jù)遷移引擎模塊、開發(fā)者應(yīng)用程序接口(API)。一種面向結(jié)構(gòu)的數(shù)據(jù)遷移的方法包括設(shè)置系統(tǒng)參數(shù);定義數(shù)據(jù)遷移模版;執(zhí)行數(shù)據(jù)遷移。
文檔編號(hào)G06F17/30GK1763745SQ20051009586
公開日2006年4月26日 申請(qǐng)日期2005年9月6日 優(yōu)先權(quán)日2005年9月6日
發(fā)明者閻海強(qiáng) 申請(qǐng)人:閻海強(qiáng)