專利名稱:從一個(gè)源表到至少一個(gè)目標(biāo)庫(kù)的表的數(shù)據(jù)抽取系統(tǒng)及方法
從一個(gè)源表到至少一個(gè)目標(biāo)庫(kù)的表的數(shù)據(jù)抽取系統(tǒng)及方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種數(shù)據(jù)抽取系統(tǒng)及方法,尤其涉及一種從源數(shù)據(jù)庫(kù)的一個(gè)源表到至 少一個(gè)目標(biāo)數(shù)據(jù)庫(kù)的一個(gè)或多個(gè)目標(biāo)表的數(shù)據(jù)抽取系統(tǒng)及方法,屬于數(shù)據(jù)庫(kù)技術(shù)領(lǐng)域。
背景技術(shù):
在現(xiàn)有的數(shù)據(jù)庫(kù)數(shù)據(jù)處理領(lǐng)域中,存在著一些基于 ETL(Extraction-Transform-Load,即抽取-轉(zhuǎn)換-加載)技術(shù)的數(shù)據(jù)抽取工具,例如 Ascential 公司的 Datastage、Informatica 公司的 Powercenter>NCR Teradata 公司的 ETL Automation等,這類應(yīng)用工具均具備實(shí)現(xiàn)簡(jiǎn)單數(shù)據(jù)轉(zhuǎn)換的功能,也能夠很好地處理極為特 殊的需求,但通用性問(wèn)題一直是其主要的應(yīng)用瓶頸。另外,它們昂貴的價(jià)格也是難以將其進(jìn) 行廣泛普及的重要因素之一,特別是在面對(duì)一些簡(jiǎn)單的并且無(wú)須經(jīng)常更改處理的數(shù)據(jù)轉(zhuǎn)換 的情形下,更不值得使用者花費(fèi)高價(jià)購(gòu)買這類工具來(lái)實(shí)現(xiàn)上述的較簡(jiǎn)單的需求。此外,值得注意的是ETL技術(shù)主要被用于創(chuàng)建并維護(hù)數(shù)據(jù)倉(cāng)庫(kù),而針對(duì)從源數(shù)據(jù) 庫(kù)的一個(gè)源表向一個(gè)或多個(gè)目標(biāo)數(shù)據(jù)庫(kù)的一個(gè)或多個(gè)目標(biāo)表進(jìn)行數(shù)據(jù)抽取的應(yīng)用場(chǎng)景,如 圖1所示,則必須為每個(gè)目標(biāo)數(shù)據(jù)庫(kù)分別配置一次ETL應(yīng)用來(lái)對(duì)從源數(shù)據(jù)庫(kù)抽取的源數(shù)據(jù) 進(jìn)行中間轉(zhuǎn)換處理,這樣就使得整個(gè)處理過(guò)程中需要進(jìn)行多次的數(shù)據(jù)轉(zhuǎn)換操作,因此實(shí)現(xiàn) 起來(lái)頗為復(fù)雜,并且繁瑣又耗時(shí),從而會(huì)影響到數(shù)據(jù)處理的效率及系統(tǒng)的穩(wěn)定性。
發(fā)明內(nèi)容有鑒于此,本發(fā)明的目的在于提供一種從一個(gè)源表到至少一個(gè)目標(biāo)庫(kù)的表的數(shù)據(jù) 抽取系統(tǒng)及方法,以有效地解決現(xiàn)有技術(shù)中存在的從源數(shù)據(jù)庫(kù)的一個(gè)源表抽取數(shù)據(jù)到至少 一個(gè)目標(biāo)數(shù)據(jù)庫(kù)的一個(gè)或多個(gè)目標(biāo)表的操作過(guò)程復(fù)雜、繁瑣且耗時(shí),從而將會(huì)影響到數(shù)據(jù) 處理效率及系統(tǒng)穩(wěn)定性的問(wèn)題。為實(shí)現(xiàn)上述發(fā)明目的,本發(fā)明采用的技術(shù)方案如下一種從一個(gè)源表到至少一個(gè)目標(biāo)庫(kù)的表的數(shù)據(jù)抽取系統(tǒng),其包括讀取模塊,其用于根據(jù)需求從源數(shù)據(jù)庫(kù)的一個(gè)源表讀取所需的源數(shù)據(jù);中間轉(zhuǎn)換模塊,其用于將每次讀取的所述源數(shù)據(jù)分別對(duì)應(yīng)于每一個(gè)目標(biāo)數(shù)據(jù)庫(kù)的 目標(biāo)表的目標(biāo)數(shù)據(jù)格式進(jìn)行多次轉(zhuǎn)換;以及寫入模塊,其用于將每次轉(zhuǎn)換后的目標(biāo)數(shù)據(jù)寫入對(duì)應(yīng)的目標(biāo)數(shù)據(jù)庫(kù);其中,所述中間轉(zhuǎn)換模塊包括封裝子模塊,其用于封裝所述源表的源數(shù)據(jù)對(duì)應(yīng)于所述各目標(biāo)數(shù)據(jù)庫(kù)目標(biāo)表的目 標(biāo)數(shù)據(jù)的轉(zhuǎn)換處理過(guò)程,以使所述中間轉(zhuǎn)換模塊的轉(zhuǎn)換處理次數(shù)為一次。優(yōu)選地,所述封裝子模塊為動(dòng)態(tài)鏈接庫(kù),所述動(dòng)態(tài)鏈接庫(kù)包括源數(shù)據(jù)接口單元, 其用于參數(shù)化描述所述源表的源數(shù)據(jù)信息;目標(biāo)數(shù)據(jù)接口單元,其用于參數(shù)化描述所述各 目標(biāo)數(shù)據(jù)庫(kù)目標(biāo)表對(duì)應(yīng)的目標(biāo)數(shù)據(jù)信息;以及,解析單元,其用于調(diào)用所述源數(shù)據(jù)接口單元 和所述目標(biāo)數(shù)據(jù)接口單元,以將每次讀取的源數(shù)據(jù)對(duì)應(yīng)解析成包括目標(biāo)數(shù)據(jù)結(jié)果的目標(biāo)數(shù)據(jù)結(jié)果集,所述目標(biāo)數(shù)據(jù)結(jié)果中含有經(jīng)過(guò)轉(zhuǎn)換處理后的所述各目標(biāo)數(shù)據(jù)庫(kù)目標(biāo)表對(duì)應(yīng)的目 標(biāo)數(shù)據(jù)及其相應(yīng)的所述目標(biāo)數(shù)據(jù)信息。優(yōu)選地,所述源數(shù)據(jù)信息的參數(shù)化描述內(nèi)容至少包括所述源數(shù)據(jù)所屬的源數(shù)據(jù) 庫(kù)名、源表名、源數(shù)據(jù)記錄、以及每條源數(shù)據(jù)記錄的數(shù)據(jù)長(zhǎng)度;以及,所述目標(biāo)數(shù)據(jù)信息的參 數(shù)化描述內(nèi)容至少包括所述目標(biāo)數(shù)據(jù)庫(kù)名、目標(biāo)表名、目標(biāo)數(shù)據(jù)記錄、以及每條目標(biāo)數(shù)據(jù) 記錄的數(shù)據(jù)長(zhǎng)度。優(yōu)選地,所述目標(biāo)數(shù)據(jù)結(jié)果集中還包括所述各目標(biāo)數(shù)據(jù)庫(kù)目標(biāo)表對(duì)應(yīng)的目標(biāo)數(shù)據(jù) 記錄的數(shù)目。優(yōu)選地,所述數(shù)據(jù)抽取系統(tǒng)還包括設(shè)置于所述源數(shù)據(jù)庫(kù)和所述各目標(biāo)數(shù)據(jù)庫(kù)之外 的中間存儲(chǔ)模塊,其用于存儲(chǔ)經(jīng)過(guò)所述中間轉(zhuǎn)換模塊轉(zhuǎn)換后的所述各目標(biāo)數(shù)據(jù)庫(kù)目標(biāo)表對(duì) 應(yīng)的目標(biāo)數(shù)據(jù)的全部或者部分。一種從一個(gè)源表到至少一個(gè)目標(biāo)庫(kù)的表的數(shù)據(jù)抽取方法,將源數(shù)據(jù)庫(kù)的一個(gè)源表 的源數(shù)據(jù)與各目標(biāo)數(shù)據(jù)庫(kù)目標(biāo)表對(duì)應(yīng)的目標(biāo)數(shù)據(jù)格式的轉(zhuǎn)換處理過(guò)程封裝成封裝子模塊, 所述數(shù)據(jù)抽取方法包括如下步驟a、連接所述源數(shù)據(jù)庫(kù);b、從所述源表讀取所需的源數(shù)據(jù),如果其首記錄非空則執(zhí)行步驟C,否則結(jié)束;C、判斷所述源數(shù)據(jù)的當(dāng)前記錄是否已為空,如果非空則調(diào)用所述封裝子模塊將所 述源數(shù)據(jù)一次轉(zhuǎn)換處理成所述各目標(biāo)數(shù)據(jù)庫(kù)目標(biāo)表對(duì)應(yīng)的目標(biāo)數(shù)據(jù),否則結(jié)束;d、如果轉(zhuǎn)換后的所述目標(biāo)數(shù)據(jù)為空則執(zhí)行步驟e,否則將其分別寫入對(duì)應(yīng)的所述 各目標(biāo)數(shù)據(jù)庫(kù)的目標(biāo)表;以及e、讀取所述源數(shù)據(jù)的下一條記錄,再重復(fù)執(zhí)行步驟C。優(yōu)選地,所述封裝子模塊為動(dòng)態(tài)鏈接庫(kù),所述動(dòng)態(tài)鏈接庫(kù)根據(jù)其內(nèi)設(shè)置的均已參 數(shù)化描述的所述源表的源數(shù)據(jù)信息與所述各目標(biāo)數(shù)據(jù)庫(kù)目標(biāo)表對(duì)應(yīng)的目標(biāo)數(shù)據(jù)信息,將每 次讀取的所述源數(shù)據(jù)對(duì)應(yīng)解析成包括目標(biāo)數(shù)據(jù)結(jié)果的目標(biāo)數(shù)據(jù)結(jié)果集,所述目標(biāo)數(shù)據(jù)結(jié)果 中含有經(jīng)過(guò)轉(zhuǎn)換處理后的所述各目標(biāo)數(shù)據(jù)庫(kù)目標(biāo)表對(duì)應(yīng)的目標(biāo)數(shù)據(jù)及其相應(yīng)的所述目標(biāo) 數(shù)據(jù)信息。優(yōu)選地,所述源數(shù)據(jù)信息的參數(shù)化描述內(nèi)容至少包括所述源數(shù)據(jù)所屬的源數(shù)據(jù) 庫(kù)名、源表名、源數(shù)據(jù)記錄、以及每條源數(shù)據(jù)記錄的數(shù)據(jù)長(zhǎng)度;以及,所述目標(biāo)數(shù)據(jù)信息的參 數(shù)化描述內(nèi)容至少包括所述目標(biāo)數(shù)據(jù)庫(kù)名、目標(biāo)表名、目標(biāo)數(shù)據(jù)記錄、以及每條目標(biāo)數(shù)據(jù) 記錄的數(shù)據(jù)長(zhǎng)度。優(yōu)選地,所述目標(biāo)數(shù)據(jù)結(jié)果集中還包括所述各目標(biāo)數(shù)據(jù)庫(kù)目標(biāo)表對(duì)應(yīng)的目標(biāo)數(shù)據(jù) 記錄的數(shù)目。優(yōu)選地,所述數(shù)據(jù)抽取方法還包括步驟將經(jīng)過(guò)所述中間轉(zhuǎn)換模塊轉(zhuǎn)換后的所述 各目標(biāo)數(shù)據(jù)庫(kù)目標(biāo)表對(duì)應(yīng)的目標(biāo)數(shù)據(jù)的全部或者部分存儲(chǔ)于中間存儲(chǔ)模塊,所述中間存儲(chǔ) 模塊設(shè)置于所述源數(shù)據(jù)庫(kù)和所述各目標(biāo)數(shù)據(jù)庫(kù)之外。本發(fā)明的有益效果在于與現(xiàn)有的基于ETL技術(shù)的數(shù)據(jù)抽取、轉(zhuǎn)換處理相比,本發(fā) 明采用接口化和動(dòng)態(tài)鏈接庫(kù)(DLL,Dynamic Link Lib)技術(shù),成功地將從一個(gè)源數(shù)據(jù)庫(kù)到多 個(gè)目標(biāo)數(shù)據(jù)庫(kù)的數(shù)據(jù)轉(zhuǎn)換處理過(guò)程進(jìn)行了封裝,因此使用本發(fā)明所提供的系統(tǒng)及方法僅需 通過(guò)一次數(shù)據(jù)轉(zhuǎn)換即能夠同時(shí)生成到多個(gè)目標(biāo)數(shù)據(jù)庫(kù)的數(shù)據(jù)結(jié)果集,從而極大地簡(jiǎn)化了數(shù)據(jù)轉(zhuǎn)換的操作配置,提高了處理效率,并有利于促進(jìn)系統(tǒng)的穩(wěn)定。同時(shí),本發(fā)明所提供的系 統(tǒng)及方法還支持根據(jù)實(shí)際應(yīng)用需求而將相應(yīng)的數(shù)據(jù)轉(zhuǎn)換規(guī)則自由定制在動(dòng)態(tài)鏈接庫(kù)中,因 此提高了系統(tǒng)的擴(kuò)展性和通用性,使得數(shù)據(jù)抽取與轉(zhuǎn)換處理的設(shè)置與操作更加地靈活和方 便。
以下將結(jié)合附圖和實(shí)施例,對(duì)本發(fā)明的技術(shù)方案作進(jìn)一步的詳細(xì)描述。其中圖1是現(xiàn)有技術(shù)中基于ETL技術(shù)的數(shù)據(jù)抽取系統(tǒng)的組成結(jié)構(gòu)示意圖;圖2是本發(fā)明的數(shù)據(jù)抽取系統(tǒng)的一個(gè)較佳實(shí)施例的組成結(jié)構(gòu)示意圖;圖3是本發(fā)明的數(shù)據(jù)抽取系統(tǒng)的另一個(gè)較佳實(shí)施例的組成結(jié)構(gòu)示意圖;圖4是本發(fā)明的數(shù)據(jù)抽取系統(tǒng)的較佳實(shí)施例中的封裝子模塊的組成結(jié)構(gòu)示意圖;圖5是本發(fā)明的數(shù)據(jù)抽取方法的較佳實(shí)施例的流程圖。
具體實(shí)施方式請(qǐng)參閱圖2,它是本發(fā)明的從一個(gè)源表到至少一個(gè)目標(biāo)庫(kù)的表的數(shù)據(jù)抽取系統(tǒng)的 一個(gè)較佳實(shí)施例的組成結(jié)構(gòu)示意圖。在圖2中,該數(shù)據(jù)抽取系統(tǒng)包括讀取模塊4、中間轉(zhuǎn) 換模塊2和寫入模塊5。其中,讀取模塊4用于從源數(shù)據(jù)庫(kù)的源表1讀取所需的源數(shù)據(jù);中 間轉(zhuǎn)換模塊2包括封裝子模塊21,在該封裝子模塊21中封裝了源數(shù)據(jù)庫(kù)的源表1的源數(shù)據(jù) 對(duì)應(yīng)于各目標(biāo)數(shù)據(jù)庫(kù)的目標(biāo)表3的目標(biāo)數(shù)據(jù)格式的轉(zhuǎn)換處理過(guò)程,這樣中間轉(zhuǎn)換模塊2的 相應(yīng)數(shù)據(jù)轉(zhuǎn)換處理僅需一次即可;寫入模塊5用于將轉(zhuǎn)換后的數(shù)據(jù)寫入各目標(biāo)數(shù)據(jù)庫(kù)的目 標(biāo)表3。圖4揭示了通過(guò)動(dòng)態(tài)鏈接庫(kù)實(shí)現(xiàn)的封裝子模塊21的組成結(jié)構(gòu),其中的源數(shù)據(jù)接 口單元211用于參數(shù)化描述源數(shù)據(jù)庫(kù)的源表1的源數(shù)據(jù)信息,這樣的信息內(nèi)容包括讀取的 源數(shù)據(jù)所屬的源數(shù)據(jù)庫(kù)名、源表名、源數(shù)據(jù)記錄以及每條源數(shù)據(jù)記錄的數(shù)據(jù)長(zhǎng)度;目標(biāo)數(shù)據(jù) 接口單元212用于參數(shù)化描述各目標(biāo)數(shù)據(jù)庫(kù)的目標(biāo)表3的目標(biāo)數(shù)據(jù)信息,這樣的信息內(nèi)容 包括目標(biāo)數(shù)據(jù)庫(kù)名、目標(biāo)表名、目標(biāo)數(shù)據(jù)記錄以及每條目標(biāo)數(shù)據(jù)記錄的數(shù)據(jù)長(zhǎng)度;解析單元 213用于調(diào)用源數(shù)據(jù)接口單元211和目標(biāo)數(shù)據(jù)接口單元212,從而能夠?qū)⒚看巫x取的源數(shù)據(jù) 對(duì)應(yīng)解析成包括目標(biāo)數(shù)據(jù)結(jié)果的目標(biāo)數(shù)據(jù)結(jié)果集,該目標(biāo)數(shù)據(jù)結(jié)果中含有經(jīng)過(guò)轉(zhuǎn)換處理后 的各目標(biāo)數(shù)據(jù)庫(kù)的目標(biāo)表3對(duì)應(yīng)的目標(biāo)數(shù)據(jù)及其相應(yīng)的目標(biāo)數(shù)據(jù)信息,在目標(biāo)數(shù)據(jù)結(jié)果集 中還包括各目標(biāo)數(shù)據(jù)庫(kù)的目標(biāo)表3對(duì)應(yīng)的目標(biāo)數(shù)據(jù)記錄的數(shù)目。在一個(gè)較佳的實(shí)施例中,可以采用類似于C語(yǔ)言的偽代碼實(shí)現(xiàn)具有上述的目標(biāo)數(shù) 據(jù)結(jié)果與目標(biāo)數(shù)據(jù)結(jié)果集/*目標(biāo)數(shù)據(jù)結(jié)果的結(jié)構(gòu)*/typedef struct {char destDbNm[15+l] ;/* 目標(biāo)數(shù)據(jù)庫(kù)名 */char destTblNm[40+l] ;/* 目標(biāo)表名 */INT32 XbResRecLen ;/*每條目標(biāo)數(shù)據(jù)記錄的數(shù)據(jù)長(zhǎng)度*/char recData[REC_MAX_LEN+1] ;/* 轉(zhuǎn)換后的目標(biāo)數(shù)據(jù)記錄 */}xb_res_t ;
/*目標(biāo)數(shù)據(jù)結(jié)果集的結(jié)構(gòu)*/typedef struct{INT32 resNo ;/*目標(biāo)數(shù)據(jù)結(jié)果集中目標(biāo)數(shù)據(jù)記錄的數(shù)目*/xb_res_t xbRes [XBRES_MAX_N0] ;/* 目標(biāo)數(shù)據(jù)結(jié)果 */} xb_res_con_t ;采用以上直接描述的或者其他的與之相類似的設(shè)置,就可以根據(jù)實(shí)際應(yīng)用需求而 通過(guò)動(dòng)態(tài)鏈接庫(kù)技術(shù)和接口化技術(shù)封裝源數(shù)據(jù)到多種類型的目標(biāo)數(shù)據(jù)格式的轉(zhuǎn)換處理過(guò) 程,因此最終僅需調(diào)用封裝子模塊21進(jìn)行一次數(shù)據(jù)轉(zhuǎn)換就能同時(shí)生成預(yù)設(shè)的各目標(biāo)數(shù)據(jù) 庫(kù)對(duì)應(yīng)的目標(biāo)數(shù)據(jù),從而極大地簡(jiǎn)化了數(shù)據(jù)轉(zhuǎn)換的操作配置,提高了處理效率,并有利于促 進(jìn)系統(tǒng)的穩(wěn)定。此外,當(dāng)在某些情形下出現(xiàn)應(yīng)用需求發(fā)生改變時(shí),也僅需修改其中的動(dòng)態(tài)鏈 接庫(kù)而不必改造系統(tǒng)的其他部分,這樣就可以靈活地應(yīng)對(duì)需求的變更,顯著提高整個(gè)系統(tǒng) 的擴(kuò)展性和通用性。再請(qǐng)參閱圖3,它是本發(fā)明的從一個(gè)源表到至少一個(gè)目標(biāo)庫(kù)的表的數(shù)據(jù)抽取系統(tǒng) 的另一個(gè)較佳實(shí)施例的組成結(jié)構(gòu)示意圖。它與上述圖2所示出的較佳實(shí)施例的組成結(jié)構(gòu)基 本類似,二者的區(qū)別之處在于此時(shí)的數(shù)據(jù)抽取系統(tǒng)還包括設(shè)置于中間轉(zhuǎn)換模塊2與寫入 模塊5之間的中間存儲(chǔ)模塊6,以便在將轉(zhuǎn)換后的目標(biāo)數(shù)據(jù)寫入對(duì)應(yīng)的目標(biāo)數(shù)據(jù)庫(kù)的目標(biāo) 表3之前先將這些目標(biāo)數(shù)據(jù)暫存于該存儲(chǔ)模塊6中供某些應(yīng)用服務(wù)調(diào)用。圖5是本發(fā)明的從一個(gè)源表到至少一個(gè)目標(biāo)庫(kù)的表的數(shù)據(jù)抽取方法的一個(gè)較佳 實(shí)施例的流程圖。請(qǐng)參照?qǐng)D5,下面將詳細(xì)描述該數(shù)據(jù)抽取方法的處理步驟首先,根據(jù)需求在步驟Sll中,對(duì)一個(gè)需要從中獲取源數(shù)據(jù)的源數(shù)據(jù)庫(kù)進(jìn)行連接 操作,其方式可以采用預(yù)先將該源數(shù)據(jù)庫(kù)名、所需源數(shù)據(jù)所屬的源表名、各目標(biāo)數(shù)據(jù)庫(kù)名、 轉(zhuǎn)換后的目標(biāo)數(shù)據(jù)所屬的目標(biāo)數(shù)據(jù)庫(kù)的目標(biāo)表名、各數(shù)據(jù)庫(kù)的物理連接路徑以及運(yùn)行參數(shù) 配置等信息內(nèi)容寫入配置文件中,再通過(guò)讀入此類配置文件來(lái)實(shí)現(xiàn)上述連接操作。而且,根 據(jù)實(shí)際需求還可以更進(jìn)一步地將需要處理的若干個(gè)源數(shù)據(jù)庫(kù)的參數(shù)信息都寫入上述的配 置文件中,以便在采用本發(fā)明方法將一個(gè)源數(shù)據(jù)庫(kù)的源表數(shù)據(jù)全部處理完畢之后,隨后再 依次連接并處理下一個(gè)源數(shù)據(jù)庫(kù)。然后,進(jìn)入步驟S12,從源數(shù)據(jù)庫(kù)的源表讀取所需的源數(shù)據(jù)的首記錄;在步驟S13中,判斷在上一個(gè)步驟S12中得到的源數(shù)據(jù)的首記錄是否為空,如果其 非空,則執(zhí)行步驟S14;否則,表明所需的源數(shù)據(jù)目前還不存在或者尚未被更新,因此即無(wú) 進(jìn)一步操作的必要,直接結(jié)束。隨后,在步驟S14中,判斷所需的源數(shù)據(jù)的當(dāng)前記錄是否已經(jīng)為空,如果其非空, 則執(zhí)行步驟S15進(jìn)行此次源數(shù)據(jù)的數(shù)據(jù)轉(zhuǎn)換處理;否則,表明所需的源數(shù)據(jù)目前已經(jīng)全部 處理完畢,因此即無(wú)進(jìn)一步操作的必要,直接結(jié)束。在步驟S15中,調(diào)用封裝子模塊來(lái)進(jìn)行數(shù)據(jù)轉(zhuǎn)換處理,這樣的封裝子模塊是預(yù)先 已經(jīng)將源表的源數(shù)據(jù)與各目標(biāo)數(shù)據(jù)庫(kù)目標(biāo)表對(duì)應(yīng)的目標(biāo)數(shù)據(jù)格式的轉(zhuǎn)換處理過(guò)程進(jìn)行封 裝處理,具體可以采用動(dòng)態(tài)鏈接庫(kù)的方式。而且,在此類動(dòng)態(tài)鏈接庫(kù)中預(yù)先已對(duì)源表的源數(shù) 據(jù)信息與各目標(biāo)數(shù)據(jù)庫(kù)目標(biāo)表對(duì)應(yīng)的目標(biāo)數(shù)據(jù)信息進(jìn)行了參數(shù)化描述,然后即可利用它們 對(duì)輸入的數(shù)據(jù)進(jìn)行解析、轉(zhuǎn)換處理后再予以輸出,具體的參數(shù)化描述內(nèi)容如前所述,所以在 此不再贅述。
在步驟S16中,通過(guò)上述的數(shù)據(jù)轉(zhuǎn)換處理后,將本次的源數(shù)據(jù)一次性地同時(shí)解析 成包括目標(biāo)數(shù)據(jù)結(jié)果的目標(biāo)數(shù)據(jù)結(jié)果集,該目標(biāo)數(shù)據(jù)結(jié)果中含有經(jīng)過(guò)轉(zhuǎn)換處理后的各目標(biāo) 數(shù)據(jù)庫(kù)目標(biāo)表對(duì)應(yīng)的目標(biāo)數(shù)據(jù)及其相應(yīng)的目標(biāo)數(shù)據(jù)信息,在目標(biāo)數(shù)據(jù)結(jié)果集中還包括各目 標(biāo)數(shù)據(jù)庫(kù)目標(biāo)表對(duì)應(yīng)的目標(biāo)數(shù)據(jù)記錄的數(shù)目。隨后,進(jìn)入步驟S17,對(duì)于獲取的目標(biāo)數(shù)據(jù)結(jié)果集,首先根據(jù)其內(nèi)記載的目標(biāo)數(shù)據(jù) 記錄的數(shù)目判斷該目標(biāo)數(shù)據(jù)結(jié)果集是否為空,如果是空,則進(jìn)入步驟S19 ;否則,進(jìn)入步驟 S18。在步驟S18中,根據(jù)獲取的目標(biāo)數(shù)據(jù)結(jié)果集內(nèi)目標(biāo)數(shù)據(jù)結(jié)果中的記載信息,將其 中的各目標(biāo)數(shù)據(jù)分別寫入其對(duì)應(yīng)的各目標(biāo)數(shù)據(jù)庫(kù)的目標(biāo)表中,再將本次轉(zhuǎn)換后的目標(biāo)數(shù)據(jù) 全部寫入處理完畢之后,進(jìn)入步驟S19。在步驟S19中,讀取源數(shù)據(jù)的下一條記錄,然后重新進(jìn)入步驟S14。在本發(fā)明方法的另一個(gè)較佳實(shí)施例中,還可以根據(jù)實(shí)際需要增加一個(gè)步驟即,將 經(jīng)過(guò)中間轉(zhuǎn)換模塊轉(zhuǎn)換后的各目標(biāo)數(shù)據(jù)庫(kù)目標(biāo)表對(duì)應(yīng)的目標(biāo)數(shù)據(jù)全部或者部分存儲(chǔ)于中 間存儲(chǔ)模塊,這樣的中間存儲(chǔ)模塊并非是設(shè)于源數(shù)據(jù)庫(kù)和各目標(biāo)數(shù)據(jù)庫(kù)的內(nèi)部,而是可以 設(shè)于內(nèi)置或者外置的計(jì)算機(jī)物理儲(chǔ)存裝置(如內(nèi)存、閃存等),其具體形式也可以采用存于 計(jì)算機(jī)物理空間上的文件形式,而其存儲(chǔ)生命周期可以是暫時(shí)的(如幾十秒、幾分鐘或幾 十分鐘等),當(dāng)然也可以是較長(zhǎng)的時(shí)間(如幾小時(shí)、甚至幾天或幾周等),這樣就可以非常迅 速或者更為方便地將所獲取的目標(biāo)數(shù)據(jù)中的某些關(guān)鍵的或敏感數(shù)據(jù)直接提供給某些應(yīng)用 服務(wù)使用,從而避免了它們?cè)購(gòu)哪繕?biāo)數(shù)據(jù)庫(kù)重復(fù)搜索、提取這些數(shù)據(jù)的過(guò)程,因此有利于提 高應(yīng)用服務(wù)的處理效率、減輕相應(yīng)系統(tǒng)(如數(shù)據(jù)庫(kù)服務(wù)器)的負(fù)擔(dān)并提高其穩(wěn)定性。綜上所述,與現(xiàn)有的基于ETL技術(shù)的數(shù)據(jù)抽取、轉(zhuǎn)換處理相比,本發(fā)明所提供的系 統(tǒng)及方法能夠極大地簡(jiǎn)化數(shù)據(jù)轉(zhuǎn)換的操作配置,提高處理效率,并有利于提高系統(tǒng)的穩(wěn)定 性、擴(kuò)展性與通用性,使得數(shù)據(jù)抽取與轉(zhuǎn)換處理操作更加靈活和方便。因此,本發(fā)明所提供 的系統(tǒng)及方法特別適用于銀行、金融、證券、電子商務(wù)等具有較大業(yè)務(wù)數(shù)據(jù)轉(zhuǎn)換處理量的行 業(yè)領(lǐng)域。以上列舉了若干具體實(shí)施例來(lái)詳細(xì)闡明本發(fā)明的一種從一個(gè)源表到至少一個(gè)目 標(biāo)庫(kù)的表的數(shù)據(jù)抽取系統(tǒng)及方法,這些個(gè)例僅供說(shuō)明本發(fā)明的原理及其實(shí)施方式之用,而 非對(duì)本發(fā)明的限制,在不脫離本發(fā)明的精神和范圍的情況下,本領(lǐng)域的普通技術(shù)人員還可 以作出各種變形和改進(jìn),因此所有等同的技術(shù)方案均應(yīng)屬于本發(fā)明的范疇并為本發(fā)明的各 項(xiàng)權(quán)利要求所限定。
權(quán)利要求
1.一種從一個(gè)源表到至少一個(gè)目標(biāo)庫(kù)的表的數(shù)據(jù)抽取系統(tǒng),其包括讀取模塊,其用于根據(jù)需求從源數(shù)據(jù)庫(kù)的一個(gè)源表讀取所需的源數(shù)據(jù);中間轉(zhuǎn)換模塊,其用于將每次讀取的所述源數(shù)據(jù)分別對(duì)應(yīng)于每一個(gè)目標(biāo)數(shù)據(jù)庫(kù)的目標(biāo) 表的目標(biāo)數(shù)據(jù)格式進(jìn)行多次轉(zhuǎn)換;以及寫入模塊,其用于將每次轉(zhuǎn)換后的目標(biāo)數(shù)據(jù)寫入對(duì)應(yīng)的目標(biāo)數(shù)據(jù)庫(kù)的目標(biāo)表;其特征在于,所述中間轉(zhuǎn)換模塊包括封裝子模塊,其用于封裝所述源表的源數(shù)據(jù)對(duì)應(yīng)于所述各目標(biāo)數(shù)據(jù)庫(kù)目標(biāo)表的目標(biāo)數(shù) 據(jù)的轉(zhuǎn)換處理過(guò)程,以使所述中間轉(zhuǎn)換模塊的轉(zhuǎn)換處理次數(shù)為一次。
2.根據(jù)權(quán)利要求1所述的數(shù)據(jù)抽取系統(tǒng),其特征在于,所述封裝子模塊為動(dòng)態(tài)鏈接庫(kù), 所述動(dòng)態(tài)鏈接庫(kù)包括源數(shù)據(jù)接口單元,其用于參數(shù)化描述所述源表的源數(shù)據(jù)信息;目標(biāo)數(shù)據(jù)接口單元,其用于參數(shù)化描述所述各目標(biāo)數(shù)據(jù)庫(kù)目標(biāo)表對(duì)應(yīng)的目標(biāo)數(shù)據(jù)信 息;以及解析單元,其用于調(diào)用所述源數(shù)據(jù)接口單元和所述目標(biāo)數(shù)據(jù)接口單元,以將每次讀取 的源數(shù)據(jù)對(duì)應(yīng)解析成包括目標(biāo)數(shù)據(jù)結(jié)果的目標(biāo)數(shù)據(jù)結(jié)果集,所述目標(biāo)數(shù)據(jù)結(jié)果中含有經(jīng)過(guò) 轉(zhuǎn)換處理后的所述各目標(biāo)數(shù)據(jù)庫(kù)目標(biāo)表對(duì)應(yīng)的目標(biāo)數(shù)據(jù)及其相應(yīng)的所述目標(biāo)數(shù)據(jù)信息。
3.根據(jù)權(quán)利要求2所述的數(shù)據(jù)抽取系統(tǒng),其特征在于,所述源數(shù)據(jù)信息的參數(shù)化描述 內(nèi)容至少包括所述源數(shù)據(jù)所屬的源數(shù)據(jù)庫(kù)名、源表名、源數(shù)據(jù)記錄、以及每條源數(shù)據(jù)記錄 的數(shù)據(jù)長(zhǎng)度;以及所述目標(biāo)數(shù)據(jù)信息的參數(shù)化描述內(nèi)容至少包括所述目標(biāo)數(shù)據(jù)庫(kù)名、目標(biāo)表名、目標(biāo)數(shù) 據(jù)記錄、以及每條目標(biāo)數(shù)據(jù)記錄的數(shù)據(jù)長(zhǎng)度。
4.根據(jù)權(quán)利要求2所述的數(shù)據(jù)抽取系統(tǒng),其特征在于,所述目標(biāo)數(shù)據(jù)結(jié)果集中還包括 所述各目標(biāo)數(shù)據(jù)庫(kù)目標(biāo)表對(duì)應(yīng)的目標(biāo)數(shù)據(jù)記錄的數(shù)目。
5.根據(jù)權(quán)利要求1-4中任一項(xiàng)所述的數(shù)據(jù)抽取系統(tǒng),其特征在于還包括設(shè)置于所述源 數(shù)據(jù)庫(kù)和所述各目標(biāo)數(shù)據(jù)庫(kù)之外的中間存儲(chǔ)模塊,其用于存儲(chǔ)經(jīng)過(guò)所述中間轉(zhuǎn)換模塊轉(zhuǎn)換 后的所述各目標(biāo)數(shù)據(jù)庫(kù)目標(biāo)表對(duì)應(yīng)的目標(biāo)數(shù)據(jù)的全部或者部分。
6.一種從一個(gè)源表到至少一個(gè)目標(biāo)庫(kù)的表的數(shù)據(jù)抽取方法,其特征在于,將源數(shù)據(jù)庫(kù) 的一個(gè)源表的源數(shù)據(jù)與各目標(biāo)數(shù)據(jù)庫(kù)目標(biāo)表對(duì)應(yīng)的目標(biāo)數(shù)據(jù)格式的轉(zhuǎn)換處理過(guò)程封裝成 封裝子模塊,所述數(shù)據(jù)抽取方法包括如下步驟a、連接所述源數(shù)據(jù)庫(kù);b、從所述源表讀取所需的源數(shù)據(jù),如果其首記錄非空則執(zhí)行步驟c,否則結(jié)束;C、判斷所述源數(shù)據(jù)的當(dāng)前記錄是否已為空,如果非空則調(diào)用所述封裝子模塊將所述源 數(shù)據(jù)一次轉(zhuǎn)換處理成所述各目標(biāo)數(shù)據(jù)庫(kù)目標(biāo)表對(duì)應(yīng)的目標(biāo)數(shù)據(jù),否則結(jié)束;d、如果轉(zhuǎn)換后的所述目標(biāo)數(shù)據(jù)為空則執(zhí)行步驟e,否則將其分別寫入對(duì)應(yīng)的所述各目 標(biāo)數(shù)據(jù)庫(kù)的目標(biāo)表;以及e、讀取所述源數(shù)據(jù)的下一條記錄,再重復(fù)執(zhí)行步驟C。
7.根據(jù)權(quán)利要求6所述的數(shù)據(jù)抽取方法,其特征在于,所述封裝子模塊為動(dòng)態(tài)鏈接庫(kù), 所述動(dòng)態(tài)鏈接庫(kù)根據(jù)其內(nèi)設(shè)置的均已參數(shù)化描述的所述源表的源數(shù)據(jù)信息與所述各目標(biāo) 數(shù)據(jù)庫(kù)目標(biāo)表對(duì)應(yīng)的目標(biāo)數(shù)據(jù)信息,將每次讀取的所述源數(shù)據(jù)對(duì)應(yīng)解析成包括目標(biāo)數(shù)據(jù)結(jié)果的目標(biāo)數(shù)據(jù)結(jié)果集,所述目標(biāo)數(shù)據(jù)結(jié)果中含有經(jīng)過(guò)轉(zhuǎn)換處理后的所述各目標(biāo)數(shù)據(jù)庫(kù)目標(biāo) 表對(duì)應(yīng)的目標(biāo)數(shù)據(jù)及其相應(yīng)的所述目標(biāo)數(shù)據(jù)信息。
8.根據(jù)權(quán)利要求7所述的數(shù)據(jù)抽取方法,其特征在于,所述源數(shù)據(jù)信息的參數(shù)化描述 內(nèi)容至少包括所述源數(shù)據(jù)所屬的源數(shù)據(jù)庫(kù)名、源表名、源數(shù)據(jù)記錄、以及每條源數(shù)據(jù)記錄 的數(shù)據(jù)長(zhǎng)度;以及所述目標(biāo)數(shù)據(jù)信息的參數(shù)化描述內(nèi)容至少包括所述目標(biāo)數(shù)據(jù)庫(kù)名、目標(biāo)表名、目標(biāo)數(shù) 據(jù)記錄、以及每條目標(biāo)數(shù)據(jù)記錄的數(shù)據(jù)長(zhǎng)度。
9.根據(jù)權(quán)利要求7所述的數(shù)據(jù)抽取方法,其特征在于,所述目標(biāo)數(shù)據(jù)結(jié)果集中還包括 所述各目標(biāo)數(shù)據(jù)庫(kù)目標(biāo)表對(duì)應(yīng)的目標(biāo)數(shù)據(jù)記錄的數(shù)目。
10.根據(jù)權(quán)利要求6-9任一項(xiàng)所述的數(shù)據(jù)抽取方法,其特征在于還包括步驟將經(jīng)過(guò)所 述中間轉(zhuǎn)換模塊轉(zhuǎn)換后的所述各目標(biāo)數(shù)據(jù)庫(kù)目標(biāo)表對(duì)應(yīng)的目標(biāo)數(shù)據(jù)的全部或者部分存儲(chǔ) 于中間存儲(chǔ)模塊,所述中間存儲(chǔ)模塊設(shè)置于所述源數(shù)據(jù)庫(kù)和所述各目標(biāo)數(shù)據(jù)庫(kù)之外。
全文摘要
本發(fā)明公開了一種從一個(gè)源表到至少一個(gè)目標(biāo)庫(kù)的表的數(shù)據(jù)抽取系統(tǒng)及方法,所述系統(tǒng)包括讀取模塊、中間轉(zhuǎn)換模塊以及寫入模塊,所述中間轉(zhuǎn)換模塊包括用于封裝源表的源數(shù)據(jù)對(duì)應(yīng)于各目標(biāo)數(shù)據(jù)庫(kù)目標(biāo)表的目標(biāo)數(shù)據(jù)格式的轉(zhuǎn)換處理過(guò)程的封裝子模塊,以使中間轉(zhuǎn)換模塊的轉(zhuǎn)換處理次數(shù)為一次。所述數(shù)據(jù)抽取方法包括步驟根據(jù)需求連接一個(gè)源表讀取源數(shù)據(jù);通過(guò)封裝子模塊將所述源數(shù)據(jù)一次轉(zhuǎn)換處理成各目標(biāo)數(shù)據(jù)庫(kù)目標(biāo)表對(duì)應(yīng)的目標(biāo)數(shù)據(jù);以及將轉(zhuǎn)換后的目標(biāo)數(shù)據(jù)分別寫入其對(duì)應(yīng)的目標(biāo)數(shù)據(jù)庫(kù)目標(biāo)表。本發(fā)明極大地簡(jiǎn)化了數(shù)據(jù)轉(zhuǎn)換的操作配置,提高了處理效率,本發(fā)明同時(shí)還能有效提高整個(gè)系統(tǒng)的穩(wěn)定性、擴(kuò)展性和通用性,使得數(shù)據(jù)抽取與轉(zhuǎn)換處理操作更加靈活和方便。
文檔編號(hào)G06F17/30GK102004744SQ20091019502
公開日2011年4月6日 申請(qǐng)日期2009年9月2日 優(yōu)先權(quán)日2009年9月2日
發(fā)明者楊燕明, 陳林, 馬東良 申請(qǐng)人:中國(guó)銀聯(lián)股份有限公司