專利名稱:一種從多個(gè)數(shù)據(jù)庫(kù)中進(jìn)行數(shù)據(jù)整理歸集的方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種計(jì)算機(jī)應(yīng)用技術(shù),是面向?qū)I(yè)技術(shù)人員使用的,可以實(shí)現(xiàn)對(duì)多個(gè)數(shù)據(jù)庫(kù)的數(shù)據(jù)進(jìn)行整理歸集的技術(shù),為報(bào)表開發(fā)與數(shù)據(jù)匯總開發(fā)提供了基礎(chǔ)技術(shù)支持。
背景技術(shù):
目前企業(yè)數(shù)據(jù)會(huì)涉及到眾多的數(shù)據(jù)庫(kù),將相應(yīng)數(shù)據(jù)庫(kù)中的數(shù)據(jù)進(jìn)行整理、歸集需要付出大量的時(shí)間與成本。本技術(shù)通過建立一種標(biāo)準(zhǔn)的數(shù)據(jù)整理流程,同時(shí)將數(shù)據(jù)歸集區(qū)分出同構(gòu)或異構(gòu)的數(shù)據(jù),將同構(gòu)數(shù)據(jù)庫(kù)的數(shù)據(jù)歸集進(jìn)行模板化,從而降低開發(fā)成本,提高開發(fā)的質(zhì)量。
發(fā)明內(nèi)容
本發(fā)明的目的是提供一種從多個(gè)數(shù)據(jù)庫(kù)中進(jìn)行數(shù)據(jù)整理歸集的方法。
本發(fā)明的目的是按以下方式實(shí)現(xiàn)的,步驟如下·
1)使用腳本描述,將同構(gòu)的數(shù)據(jù)整理統(tǒng)一化,異構(gòu)數(shù)據(jù)的處理特殊化;
2)將多個(gè)數(shù)據(jù)庫(kù)進(jìn)行編號(hào),并在腳本中設(shè)定規(guī)則,同時(shí)利用數(shù)據(jù)庫(kù)本身自帶的技術(shù),完成數(shù)據(jù)的集成加工,并通過實(shí)時(shí)調(diào)用接口或與定時(shí)事件處理進(jìn)行綁定,完成數(shù)據(jù)的實(shí)時(shí)歸集或定時(shí)歸集;
3)在跨多數(shù)據(jù)庫(kù)的報(bào)表開發(fā)或數(shù)據(jù)集中匯總時(shí)發(fā)揮作用,在使用時(shí),通過簡(jiǎn)單標(biāo)簽?zāi)_本進(jìn)行任務(wù)描述,具體標(biāo)簽?zāi)_本如下
/*―-數(shù)據(jù)庫(kù)配置節(jié),例如OOOl.. 0002,0004,0006 */ —兩個(gè)帳套連接配置編號(hào)之間使用逗號(hào)做連接符,如果使用’..’連接符,表示從XX號(hào)到XX號(hào),比如
0001. 0004 表示 0001, 0002,0003, 0004〈DATABASE〉
〈/DATABASE〉
/*---結(jié)果集配置節(jié)一*/
/* 00結(jié)果存放的表名,必須是以WDT_開頭的表*/ —需要在當(dāng)前帳套中創(chuàng)建這樣的一個(gè)實(shí)體表,其中必須包含數(shù)據(jù)庫(kù)編號(hào)和數(shù)據(jù)庫(kù)名稱字段,這兩個(gè)字段系統(tǒng)分別默認(rèn)為:DB_ID,DB_NAME.如果不釆用默認(rèn)值,則所建結(jié)果表對(duì)應(yīng)的兩個(gè)字段名必須與用戶自定義的一致.
<RESULT_TABLE></RESULT_TABLE>
/* Ol刪除相應(yīng)表的數(shù)據(jù)的條件,NONE =不執(zhí)行刪除*/
<result_delete_where>
〈/RESULT J)ELETE_WHERE>
/* 02用于指明被歸集出來(lái)的數(shù)據(jù)存放列的順序,該順序與最后的獲得數(shù)據(jù)的SQL保持一致*/
<RESULT_C0LUMN>
</RESULT_C0LUMN>
/* 03結(jié)果表中表示數(shù)據(jù)庫(kù)編號(hào)的字段,不寫采用黙認(rèn)值DB_ID */<RESULT_DB_ID_COLUMN>
DB_ID
〈/RESULT—DB—ID_C0LUMN>
/* 04結(jié)果表中表示數(shù)據(jù)庫(kù)名稱的字段,不寫采用黙認(rèn)值DB_NAME */<RESULT_DB_NAME_COLUMN>
db_name
〈/RESULT一DB_NAME_COLUMN>·
/*-一數(shù)據(jù)歸集過程,可以為SQL,也可為執(zhí)行存儲(chǔ)過程,如果要增加步驟,使用編號(hào)區(qū)分開就可以了一-*/
<STEP1>
</STEPl>
<STEP2>
</STEP2>
/*--結(jié)果集獲取語(yǔ)句,可以為SQL,也可為執(zhí)行存儲(chǔ)過程,但要注意列的順序與前面的結(jié)果集列能夠進(jìn)行對(duì)應(yīng)一-*/
<RESULT_SQL>
</RESULT_SQL>
具有的功能和有益效果
2.支持從多個(gè)數(shù)據(jù)庫(kù)中將數(shù)據(jù)進(jìn)行實(shí)時(shí)或定時(shí)進(jìn)行歸集匯總。
3.提供API完成數(shù)據(jù)結(jié)果的使用。
4.可以實(shí)現(xiàn)對(duì)同構(gòu)數(shù)據(jù)庫(kù)的數(shù)據(jù)模板化抽取,提高開發(fā)效率。
5.可以將異構(gòu)與同構(gòu)的數(shù)據(jù)庫(kù)按照相應(yīng)的規(guī)則進(jìn)行集中。
具體實(shí)施例方式
配置數(shù)據(jù)庫(kù)連接,完成各個(gè)需要?dú)w集數(shù)據(jù)庫(kù)的連接指向。建立數(shù)據(jù)歸集腳本需要的中間表,存儲(chǔ)過程等內(nèi)容,然后配置數(shù)據(jù)歸集腳本。
在報(bào)表運(yùn)算中進(jìn)行調(diào)用,或在定時(shí)服務(wù)中調(diào)用。
腳本使用步驟如下
功能從不同的四個(gè)數(shù)據(jù)庫(kù)中歸集部門表
所建的結(jié)果表sql語(yǔ)句
CREATE TABLE WDT_RESULT(
BMBH VARCHAR(20) NULL,
BMMC VARCHAR(60) NULL,
DB_ID VARCHAR(20) NULL,
DB—NAME VARCHAR(60) NULL)
go
數(shù)據(jù)歸集定義部分
/*—-數(shù)據(jù)庫(kù)配置節(jié),例如0001.. 0002,0004,0006 —*/
〈DATABASE〉
0001,0002, 0003,0004〈/DATABASE〉
/*—結(jié)果集配置節(jié)一*/
/* 00結(jié)果存放的表名,必須是以WDT_開頭的表*/
<RESULT_TABLE>
WDT_RESULT
</RESULT_TABLE>
/* 01刪除相應(yīng)表的數(shù)據(jù)的條件,NONE =不執(zhí)行刪除*/
〈RESULT—DELETE—WHERE〉
</RESULT_DELETE_WHERE>
/* 02用于指明被歸集出來(lái)的數(shù)據(jù)存放列的順序,該順序與最后的獲得數(shù)據(jù)的SQL保持一致*/
<RESULT_COLUMN>
BMBH, BMMC</RESULT_COLUMN>·
/* 03結(jié)果表中表示數(shù)據(jù)庫(kù)編號(hào)的字段,不寫采用黙認(rèn)值DB_ID */<RESULT_DB_ID_COLUMN>
DB_ID
〈/RESULT—DB—ID_COLUMN>
/* 04結(jié)果表中表示數(shù)據(jù)庫(kù)名稱的字段,不寫采用黙認(rèn)值DB—NAME */
〈RESULT—DB—NAME_C0LUMN>
DB_NAME
〈/RESULT—DB—NAME—COLU 麗〉
/*-一結(jié)果集獲取語(yǔ)句,可以為SQL,也可為執(zhí)行存儲(chǔ)過程,但要注意列的順序與前面的結(jié)果集列能夠進(jìn)行對(duì)應(yīng)一*/
<RESULT_SQL>
SELECT KCBMZD_BMBH,KCBMZD_BMMC FROM KCBMZD GROUP BY
KCBMZD_BMBH, KCBMZD_BMMC
</RESULT_SQL>
主要程序組件
■數(shù)據(jù)歸集處理組件n_cst—wd_multi_database
> 編程接口方法public function integer of_exec_pre (string as—id, stringas_arg[], string as_data[]),用于完成對(duì)某一個(gè)數(shù)據(jù)歸集過程的處理調(diào)用?!鱿嚓P(guān)的數(shù)據(jù)建表命令
>數(shù)據(jù)庫(kù)連接配置表 CREATE TABLE WDCXDB(
F_IDVARCHARdO ) NOT NULL,/*用于唯一標(biāo)識(shí)相應(yīng)的數(shù)據(jù)庫(kù)編號(hào)*/
F—NAME VARCHAR(100) NOT NULL,/*用于指明是何處的數(shù)據(jù)庫(kù),一般指明工廠的名稱*/
F_TYPE VARCHAR (20) NOT NULL,/*用于指明數(shù)據(jù)庫(kù)的類型ORACLE / SYC / MSS / ODBC */
F_SERVER VARCHAR(60) NOT NULL,/*用于指明數(shù)據(jù)庫(kù)的服務(wù)器在當(dāng)前機(jī)器上的連接配置*/
F—DATABASE VARCHAR (60) NOT NULL, /*用于指明是哪個(gè)數(shù)據(jù)庫(kù)*/
F—LOGID VARCHAR (60) NOT NULL,/*登錄人*/
F_PASSWORD VARCHAR (30) NULL,/*登錄密碼*/
F—BZVARCHAR(200) NULL)
go·
CREATE UNIQUE INDEX I—WDCXDB ON WDCXDB ( F_ID )go
>數(shù)據(jù)歸集配置表,腳本部分通過數(shù)據(jù)流存儲(chǔ)格式進(jìn)行保存。
CREATE TABLE WDCXPRE(
F_IDVARCHAR (10) NOTNULL, /*前處理的編號(hào)*/
F_NAME VARCHAR (60) NOTNULL, /*前處理的名稱*/
F_AUT0RUN CHAR(I) default ’0’ null, /*是否自動(dòng)運(yùn)行*/
F—RUNDIF uOOldefault 0 null, /*運(yùn)行的間隔,單位為秒*/
F_RUNLAST uOOldefault 0 null, /*最后運(yùn)行的時(shí)間,單位為
秒,起始自*/
F_RUNNEXT uOOldefault 0 null, /*下一次需要運(yùn)行的時(shí)間*/
F_BZVARCHAR(200)null, /*備注*/
F_L0CK CHAR(I)NULL, /*是否已經(jīng)被鎖定*/
F_C0NT IMAGENULL) /*具體的內(nèi)容,使用二進(jìn)制
存儲(chǔ),但使是編輯器進(jìn)行編輯*/ go
create unique index I_WDCXPRE on WDCXPRE( F—ID ) go
實(shí)施例
■在報(bào)表系統(tǒng)中調(diào)用該技術(shù)進(jìn)行跨數(shù)據(jù)庫(kù)系統(tǒng)的報(bào)表制作,在 n_cst_jxc_pub_cx. of_pre_sql ()調(diào)用代碼如下
//如果是執(zhí)行跨數(shù)據(jù)庫(kù)數(shù)據(jù)歸集,那么便執(zhí)行前處理然后返回. if left ( upper ( trim( Is—sql )), 2) = ’P:’ then n_cst_wd_multi_database lnv_mul lnv_mul - create n_cst_wd_multi_database get_token( ls_sql , ’ )
li—ret = lnv_mul. of_exec_Pre( ls_sql,is_sjlm,is_value ) destroy lnv_mul return li_ret end if·■在定時(shí)服務(wù)n—cstjnsg_server服務(wù)對(duì)象中調(diào)用該技術(shù)■實(shí)例變量n_cst_wd_multi_database inv_mul //用于進(jìn)行多帳套的數(shù)據(jù)歸集處理
■方法of_gen_message ()中的調(diào)用腳本部分
case ’PR’ //當(dāng)為前處理時(shí),調(diào)用前處理的方式。
IF INV_MUL. OF_EXEC_PRE( LS_COL,ls_pl,ls_p2 ) = I THEN sss = Is—pre + ’執(zhí)行多帳套數(shù)據(jù)歸集處理[’ + ls_col + ’]成功W, else
sss 二 ls_pre + ’執(zhí)行多帳套數(shù)據(jù)歸集處理[’ + ls_col + ’]失敗’ + inv_mul. is_error + ’ r n’ end if· o
權(quán)利要求
1. 一種從多個(gè)數(shù)據(jù)庫(kù)中進(jìn)行數(shù)據(jù)整理歸集的方法,其特征在于步驟如下 1)使用腳本描述,將同構(gòu)的數(shù)據(jù)整理統(tǒng)一化,異構(gòu)數(shù)據(jù)的處理特殊化; 2)將多個(gè)數(shù)據(jù)庫(kù)進(jìn)行編號(hào),并在腳本中設(shè)定規(guī)則,同時(shí)利用數(shù)據(jù)庫(kù)本身自帶的技術(shù),完成數(shù)據(jù)的集成加工,并通過實(shí)時(shí)調(diào)用接口或與定時(shí)事件處理進(jìn)行綁定,完成數(shù)據(jù)的實(shí)時(shí)歸集或定時(shí)歸集; 3)在跨多數(shù)據(jù)庫(kù)的報(bào)表開發(fā)或數(shù)據(jù)集中匯總時(shí)發(fā)揮作用,在使用時(shí),通過簡(jiǎn)單標(biāo)簽?zāi)_本進(jìn)行任務(wù)描述,具體標(biāo)簽?zāi)_本如下/*-—數(shù)據(jù)庫(kù)配置節(jié),例如0001.. 0002, 0004, 0006 —*/ —兩個(gè)帳套連接配置編號(hào)之間使用逗號(hào)做連接符,如果使用’..’連接符,表示從XX號(hào)到XX號(hào),比如0001. ■ 0004 表示 0001, 0002,0003,0004〈DATABASE〉〈/DATABASE〉/*---結(jié)果集配置節(jié)---*//* 00結(jié)果存放的表名,必須是以WDT_開頭的表*/ —需要在當(dāng)前帳套中創(chuàng)建這樣的一個(gè)實(shí)體表,其中必須包含數(shù)據(jù)庫(kù)編號(hào)和數(shù)據(jù)庫(kù)名稱字段,這兩個(gè)字段系統(tǒng)分別默認(rèn)為:DB_ID,DB_NAME.如果不采用默認(rèn)值,則所建結(jié)果表對(duì)應(yīng)的兩個(gè)字段名必須與用戶自定義的一致.<RESULT_TABLE>〈/RESULT—TABLE〉/* 01刪除相應(yīng)表的數(shù)據(jù)的條件,NONE =不執(zhí)行刪除*/<RESULT_DELETE_WHERE></RESULT_DELETE_WHERE>/* 02用于指明被歸集出來(lái)的數(shù)據(jù)存放列的順序,該順序與最后的獲得數(shù)據(jù)的SQL保持一致*/<RESULT_C0LUMN></RESULT_C0LUMN>/* 03結(jié)果表中表示數(shù)據(jù)庫(kù)編號(hào)的字段,不寫采用黙認(rèn)值DB—ID */<RESULT_DB_ID_COLUMN>DB—ID</RESULT_DB_ID_COLUMN>/* 04結(jié)果表中表示數(shù)據(jù)庫(kù)名稱的字段,不寫釆用黙認(rèn)值DB_NAME */<RESULT_DB_NAME_COLUMN>DB—NAME</RESULT_DB_NAME_COLUMN>/*—數(shù)據(jù)歸集過程,可以為SQL,也可為執(zhí)行存儲(chǔ)過程,如果要增加步驟,使用編號(hào)區(qū)分開就可以了一*/<STEP1></STEPl><STEP2></STEP2>/*-一結(jié)果集獲取語(yǔ)句,可以為SQL,也可為執(zhí)行存儲(chǔ)過程,但要注意列的順序與前面的結(jié)果集列能夠進(jìn)行對(duì)應(yīng)一*/<RESULT_SQL>·</RESULT_SQL>。
全文摘要
本發(fā)明提供一種從多個(gè)數(shù)據(jù)庫(kù)中進(jìn)行數(shù)據(jù)整理歸集的方法,該方法是使用腳本描述,將同構(gòu)的數(shù)據(jù)整理統(tǒng)一化,異構(gòu)數(shù)據(jù)的處理特殊化;將多個(gè)數(shù)據(jù)庫(kù)進(jìn)行編號(hào),并在腳本中設(shè)定規(guī)則,同時(shí)利用數(shù)據(jù)庫(kù)本身自帶的技術(shù),完成數(shù)據(jù)的集成加工,并通過實(shí)時(shí)調(diào)用接口或與定時(shí)事件處理進(jìn)行綁定,完成數(shù)據(jù)的實(shí)時(shí)歸集或定時(shí)歸集;在跨多數(shù)據(jù)庫(kù)的報(bào)表開發(fā)或數(shù)據(jù)集中匯總時(shí)發(fā)揮作用,在使用時(shí),通過簡(jiǎn)單標(biāo)簽?zāi)_本進(jìn)行任務(wù)描述,支持從多個(gè)數(shù)據(jù)庫(kù)中將數(shù)據(jù)進(jìn)行實(shí)時(shí)或定時(shí)進(jìn)行歸集匯總。本發(fā)明的優(yōu)點(diǎn)是提供API完成數(shù)據(jù)結(jié)果的使用;可以實(shí)現(xiàn)對(duì)同構(gòu)數(shù)據(jù)庫(kù)的數(shù)據(jù)模板化抽取,提高開發(fā)效率;可以將異構(gòu)與同構(gòu)的數(shù)據(jù)庫(kù)按照相應(yīng)的規(guī)則進(jìn)行集中。
文檔編號(hào)G06F17/30GK101488148SQ20091001460
公開日2009年7月22日 申請(qǐng)日期2009年2月25日 優(yōu)先權(quán)日2009年2月25日
發(fā)明者陳明忠, 劉清華, 董進(jìn)軍 申請(qǐng)人:浪潮集團(tuán)山東通用軟件有限公司