專利名稱:一種用于多平臺(tái)的電能質(zhì)量監(jiān)測(cè)數(shù)據(jù)同步傳輸方法
技術(shù)領(lǐng)域:
本發(fā)明是一種用于多平臺(tái)的電能質(zhì)量監(jiān)測(cè)數(shù)據(jù)同步傳輸方法,具體指基于ORACLE存儲(chǔ)過(guò)程和XML文件格式的電能質(zhì)量監(jiān)測(cè)數(shù)據(jù)導(dǎo)出和導(dǎo)入方法,屬于電力技術(shù)領(lǐng)域。
背景技術(shù):
在當(dāng)前軟件系統(tǒng)越來(lái)越復(fù)雜,業(yè)務(wù)應(yīng)用不斷向廣度和深度擴(kuò)展的情況下,同一系統(tǒng)不同模塊之間的數(shù)據(jù)交互、不同系統(tǒng)之間的數(shù)據(jù)交互、不同廠家之間系統(tǒng)的數(shù)據(jù)交互需求變得越來(lái)越迫切。這些數(shù)據(jù)的種類和格式繁多,構(gòu)建這些系統(tǒng)的軟件平臺(tái)也并不相同,而且隨著業(yè)務(wù)流程的不斷完善和改進(jìn),軟件系統(tǒng)的數(shù)據(jù)格式和類別也會(huì)不斷變化,從而進(jìn)一步給數(shù)據(jù)的同步帶來(lái)了挑戰(zhàn)。 電能質(zhì)量監(jiān)測(cè)數(shù)據(jù)在不同平臺(tái)間進(jìn)行數(shù)據(jù)傳輸由于數(shù)據(jù)量大、耦合度高,經(jīng)常需要隨著業(yè)務(wù)的拓展不斷修改接口,每次修改后又需要做大量測(cè)試才能穩(wěn)定,但穩(wěn)定的接口通常在實(shí)際使用中過(guò)不了多久又需要升級(jí)修改。因此,尋找一種能靈活適應(yīng)業(yè)務(wù)需求變化、跨平臺(tái)、開(kāi)發(fā)簡(jiǎn)單、高效、開(kāi)放的數(shù)據(jù)同步方法,保證系統(tǒng)的穩(wěn)定可靠運(yùn)行、易于系統(tǒng)升級(jí)維護(hù)是有其實(shí)質(zhì)意義的。
發(fā)明內(nèi)容
本發(fā)明的主要目的是解決現(xiàn)有電能質(zhì)量監(jiān)測(cè)數(shù)據(jù)同步技術(shù)不利于異構(gòu)平臺(tái)使用、開(kāi)發(fā)維護(hù)部署復(fù)雜,同步數(shù)據(jù)源端和數(shù)據(jù)目的端接口耦合性過(guò)高的缺陷,提供一種更為先進(jìn)、簡(jiǎn)單、開(kāi)放、高效的方法實(shí)現(xiàn)數(shù)據(jù)同步。實(shí)現(xiàn)本發(fā)明的技術(shù)方案為
一種用于多平臺(tái)的電能質(zhì)量監(jiān)測(cè)數(shù)據(jù)同步傳輸方法,包括以下步驟
1)確定同步數(shù)據(jù)源數(shù)據(jù)庫(kù)中需要導(dǎo)出的數(shù)據(jù);
2)調(diào)用數(shù)據(jù)包函數(shù),將步驟I)中需要導(dǎo)出的數(shù)據(jù)轉(zhuǎn)換為指定格式的數(shù)據(jù);
3)記錄并輸出指定格式的數(shù)據(jù);
4)接收數(shù)據(jù)源數(shù)據(jù)庫(kù)導(dǎo)出的數(shù)據(jù),提取出數(shù)據(jù);
5)將提取的數(shù)據(jù)轉(zhuǎn)化為數(shù)據(jù)表,并建立相應(yīng)數(shù)據(jù)在數(shù)據(jù)源數(shù)據(jù)庫(kù)中的標(biāo)識(shí)與目標(biāo)庫(kù)中的標(biāo)識(shí)的映射關(guān)系表。所述步驟I)中需要導(dǎo)出的數(shù)據(jù)采用數(shù)據(jù)表或SQL語(yǔ)句描述。所述步驟2)中指定格式的數(shù)據(jù)為XML格式的字符串。所述步驟5)建立對(duì)應(yīng)的數(shù)據(jù)在數(shù)據(jù)源數(shù)據(jù)庫(kù)中的標(biāo)識(shí)與目標(biāo)庫(kù)中數(shù)據(jù)標(biāo)識(shí)的映射關(guān)系表有二種情況
11)導(dǎo)入數(shù)據(jù)的標(biāo)識(shí)不存在,則在目標(biāo)庫(kù)中插入導(dǎo)入數(shù)據(jù),增加映射導(dǎo)入數(shù)據(jù)標(biāo)識(shí)和導(dǎo)入目標(biāo)庫(kù)中的標(biāo)識(shí)映射關(guān)系;
12)映射關(guān)系中存在的導(dǎo)入數(shù)據(jù)中不存在標(biāo)識(shí),則刪除目標(biāo)庫(kù)中對(duì)應(yīng)數(shù)據(jù);
13)導(dǎo)入的數(shù)據(jù)標(biāo)識(shí)已經(jīng)存在,則更新目標(biāo)庫(kù)中對(duì)應(yīng)數(shù)據(jù)。
本發(fā)明技術(shù)方案包括兩個(gè)方面,一是使用ORACLE的PL/SQL存儲(chǔ)過(guò)程完成源端數(shù)據(jù)的導(dǎo)出,以及目的端數(shù)據(jù)的導(dǎo)入,PL/SQL在所有平臺(tái)上都適用,解決了跨平臺(tái)的問(wèn)題,同時(shí)在數(shù)據(jù)庫(kù)服務(wù)器端直接運(yùn)行,更加高效和穩(wěn)定,并且比其它高級(jí)語(yǔ)言開(kāi)發(fā)維護(hù)部署更簡(jiǎn)單。二是數(shù)據(jù)源端導(dǎo)出和數(shù)據(jù)目的端導(dǎo)入使用XML格式傳輸數(shù)據(jù),XML是自描述的數(shù)據(jù)格式,與平臺(tái)無(wú)關(guān),更易于第三方理解,在與第三方廠家共同完成同步方案時(shí)更容易溝通和合作。從程序上包括兩部 份,一部份是同步數(shù)據(jù)源端導(dǎo)出,另一部份是同步數(shù)據(jù)目的端導(dǎo)入。分別描述如下
導(dǎo)入導(dǎo)出所處理的數(shù)據(jù)格式
{數(shù)據(jù)表A長(zhǎng)度},{數(shù)據(jù)表B長(zhǎng)度},{數(shù)據(jù)表C長(zhǎng)度}……@ {數(shù)據(jù)表A的XML} {數(shù)據(jù)表B的XML } {數(shù)據(jù)表C的XML }…。如上所示,前面是數(shù)據(jù)表的長(zhǎng)度,各數(shù)據(jù)表的長(zhǎng)度以逗號(hào)分隔,長(zhǎng)度和具體數(shù)據(jù)用@分隔,省略號(hào)表示可重復(fù)一次到不限次數(shù)。所述步驟2)中提供的數(shù)據(jù)包函數(shù)為DBMS_XMLGEN. NEffCONTEXT和DBMS_XMLGEN.GETXML。所述步驟5)中提供的函數(shù)為XMLTABLE。本發(fā)明因?yàn)橥ㄟ^(guò)充分使用ORACLE本身提供的函數(shù),來(lái)進(jìn)行XML和數(shù)據(jù)表的相互轉(zhuǎn)換,同時(shí)ORACLE提供的PL/SQL是一門高效、使用方便的語(yǔ)言,簡(jiǎn)化了開(kāi)發(fā)工作量,同時(shí)也提高了穩(wěn)定性,能更好的及時(shí)響應(yīng)客戶的系統(tǒng)上線、升級(jí)要求,并能在任何平臺(tái)下完成部署。同時(shí)因?yàn)橥綌?shù)據(jù)源端和數(shù)據(jù)目的端使用XML作為交換格式,也可以供不同的廠商、不同的平臺(tái)調(diào)用,改善了系統(tǒng)的靈活性。
圖I為本發(fā)明數(shù)據(jù)導(dǎo)入導(dǎo)出的流程圖。
具體實(shí)施例方式圖I為本發(fā)明數(shù)據(jù)導(dǎo)入導(dǎo)出的流程圖,分為導(dǎo)出存儲(chǔ)過(guò)程及導(dǎo)入存儲(chǔ)過(guò)程。導(dǎo)出存儲(chǔ)過(guò)程,開(kāi)始數(shù)據(jù)的導(dǎo)出存儲(chǔ)過(guò)程,首先確定數(shù)據(jù)源端需要同步的具體數(shù)據(jù),并用數(shù)據(jù)表或SELECT語(yǔ)句進(jìn)行描述,繼而針對(duì)每一類數(shù)據(jù),分別逐個(gè)調(diào)用DBMS_XMLGEN. NEffCONTEXT和DBMS_XMLGEN. GETXML函數(shù)完成數(shù)據(jù)庫(kù)數(shù)據(jù)到XML格式串?dāng)?shù)據(jù)的轉(zhuǎn)換,將所有轉(zhuǎn)換完成的XML數(shù)據(jù)組合為存儲(chǔ)過(guò)程最終輸出。導(dǎo)入存儲(chǔ)過(guò)程,接收導(dǎo)出存儲(chǔ)過(guò)程輸出的XML格式的數(shù)據(jù),通過(guò)調(diào)用XMLTABLE函數(shù),將XML還原為數(shù)據(jù)庫(kù)的數(shù)據(jù)表形式,并建立相應(yīng)的數(shù)據(jù)在數(shù)據(jù)源數(shù)據(jù)庫(kù)中標(biāo)識(shí)與目標(biāo)庫(kù)中數(shù)據(jù)標(biāo)識(shí)的映射關(guān)系表,建立對(duì)應(yīng)的數(shù)據(jù)在數(shù)據(jù)源數(shù)據(jù)庫(kù)中的標(biāo)識(shí)與目標(biāo)庫(kù)中數(shù)據(jù)標(biāo)識(shí)的映射關(guān)系表有三種情況11)導(dǎo)入數(shù)據(jù)的標(biāo)識(shí)不存在,則在目標(biāo)庫(kù)中插入導(dǎo)入數(shù)據(jù),增加映射導(dǎo)入數(shù)據(jù)標(biāo)識(shí)和導(dǎo)入目標(biāo)庫(kù)中的標(biāo)識(shí)映射關(guān)系;12)映射關(guān)系中存在的導(dǎo)入數(shù)據(jù)中不存在標(biāo)識(shí),則刪除目標(biāo)庫(kù)中對(duì)應(yīng)數(shù)據(jù);13)導(dǎo)入的數(shù)據(jù)標(biāo)識(shí)已經(jīng)存在,則更新目標(biāo)庫(kù)中對(duì)應(yīng)數(shù)據(jù)。在某具體的網(wǎng)級(jí)主站與下級(jí)省級(jí)主站的供電局、變電站、母線、線路數(shù)據(jù)同步,運(yùn)用了本方案,場(chǎng)景如下在下級(jí)省主站數(shù)據(jù)庫(kù)中新建PROC_EXPORT_CELL過(guò)程,在過(guò)程的實(shí)現(xiàn)中,通過(guò)ORACLE本身提供的處理XML的函數(shù)DBMS_XMLGEN. NEffCONTEXT和DBMS_XMLGEN. GETXML將供電局表(TSUPPLIER)、變電站表(TSTATI0N)、母線表(TMLINE)、線路表(TLINE)的數(shù)據(jù)轉(zhuǎn)化為XML字符串,賦值給PR0C_EXP0RT_CELL過(guò)程的輸出參數(shù),從而使用數(shù)據(jù)同步接收端調(diào)用該過(guò)程可以獲取同步數(shù)據(jù)的XML格式。在網(wǎng)級(jí)主站數(shù)據(jù)庫(kù)中,新建PR0CJMP0RT_CELL過(guò)程,并建立數(shù)據(jù)源端和目的端的關(guān)系映射表T_ID_MAP,主要包括TYPE (類型,用于表示映射類型,如供電局、變電站、母線、線路映射)、TRUNK_ID(網(wǎng)主站ID ,是數(shù)據(jù)源端數(shù)據(jù)導(dǎo)入網(wǎng)主站形成的新標(biāo)ID) .BRANCH,ID (省主站ID,是同步數(shù)據(jù)在源步中的標(biāo)識(shí)ID)、BRANCH_SITE (省主站名稱)等字段,通過(guò)接收分析下級(jí)省主站PR0C_EXP0RT_CELL過(guò)程的輸出,通過(guò)調(diào)用ORACLE提供的XMLTABLE將XML數(shù)據(jù)轉(zhuǎn)化為數(shù)據(jù)表,并通過(guò)T_ID_MAP中是否已經(jīng)存在映射關(guān)系,來(lái)確定是否進(jìn)行數(shù)據(jù)插入、更新、還是刪除原先導(dǎo)入數(shù)據(jù)。
權(quán)利要求
1.一種用于多平臺(tái)的電能質(zhì)量監(jiān)測(cè)數(shù)據(jù)同步傳輸方法,其特征在于包括以下步驟 1)確定同步數(shù)據(jù)源數(shù)據(jù)庫(kù)中需要導(dǎo)出的數(shù)據(jù); 2)調(diào)用數(shù)據(jù)包函數(shù),將步驟I)中需要導(dǎo)出的數(shù)據(jù)轉(zhuǎn)換為指定格式的數(shù)據(jù); 3)記錄并輸出指定格式的數(shù)據(jù); 4)接收數(shù)據(jù)源數(shù)據(jù)庫(kù)導(dǎo)出的數(shù)據(jù),提取出數(shù)據(jù); 5)將提取的數(shù)據(jù)轉(zhuǎn)化為數(shù)據(jù)表,并建立相應(yīng)數(shù)據(jù)在數(shù)據(jù)源數(shù)據(jù)庫(kù)中的標(biāo)識(shí)與目標(biāo)庫(kù)中的標(biāo)識(shí)的映射關(guān)系表。
2.根據(jù)權(quán)利要求I所述的用于多平臺(tái)的電能質(zhì)量監(jiān)測(cè)數(shù)據(jù)同步傳輸方法,其特征在于所述步驟I)中需要導(dǎo)出的數(shù)據(jù)采用數(shù)據(jù)表或SQL語(yǔ)句描述。
3.根據(jù)權(quán)利要求I所述的用于多平臺(tái)的電能質(zhì)量監(jiān)測(cè)數(shù)據(jù)同步傳輸方法,其特征在于所述步驟2)中指定格式的數(shù)據(jù)為XML格式的字符串。
4.根據(jù)權(quán)利要求I所述的用于多平臺(tái)的電能質(zhì)量監(jiān)測(cè)數(shù)據(jù)同步傳輸方法,其特征在于所述步驟5)建立相應(yīng)數(shù)據(jù)在數(shù)據(jù)源數(shù)據(jù)庫(kù)中的標(biāo)識(shí)與目標(biāo)庫(kù)中的標(biāo)識(shí)的映射關(guān)系有三種情況 11)導(dǎo)入數(shù)據(jù)的標(biāo)識(shí)不存在,則在目標(biāo)庫(kù)中插入該導(dǎo)入數(shù)據(jù); 12)映射關(guān)系中存在的導(dǎo)入數(shù)據(jù)但不存在標(biāo)識(shí),則刪除目標(biāo)庫(kù)中對(duì)應(yīng)數(shù)據(jù); 13)導(dǎo)入的數(shù)據(jù)標(biāo)識(shí)已經(jīng)存在,則更新目標(biāo)庫(kù)中對(duì)應(yīng)數(shù)據(jù)。
全文摘要
本發(fā)明是一種用于多平臺(tái)的電能質(zhì)量監(jiān)測(cè)數(shù)據(jù)同步傳輸方法;包括如下步驟1)確定同步數(shù)據(jù)源數(shù)據(jù)庫(kù)中需要導(dǎo)出的數(shù)據(jù);2)調(diào)用數(shù)據(jù)包函數(shù),將步驟1)中需要導(dǎo)出的數(shù)據(jù)轉(zhuǎn)換為指定格式的數(shù)據(jù);3)記錄并輸出指定格式的數(shù)據(jù);4)接收數(shù)據(jù)源數(shù)據(jù)庫(kù)導(dǎo)出的數(shù)據(jù),提取出數(shù)據(jù);5)將提取的數(shù)據(jù)轉(zhuǎn)化為數(shù)據(jù)表,并建立相應(yīng)數(shù)據(jù)在數(shù)據(jù)源數(shù)據(jù)庫(kù)中的標(biāo)識(shí)與目標(biāo)庫(kù)中的標(biāo)識(shí)的映射關(guān)系表。本發(fā)明提供了在不同的平臺(tái)間電能質(zhì)量監(jiān)測(cè)數(shù)據(jù)同步傳輸方法,解決了不同平臺(tái)間數(shù)據(jù)傳輸?shù)牟患嫒菪?,具有更加高效和穩(wěn)定的效果,改善系統(tǒng)的靈活性,更易于第三方理解。
文檔編號(hào)G06F17/30GK102622415SQ20121003814
公開(kāi)日2012年8月1日 申請(qǐng)日期2012年2月20日 優(yōu)先權(quán)日2012年2月20日
發(fā)明者丁澤俊, 向陽(yáng), 李果, 段衛(wèi)國(guó), 熊耀明, 董旭柱, 鄒正華, 陳波 申請(qǐng)人:南方電網(wǎng)科學(xué)研究院有限責(zé)任公司, 深圳市領(lǐng)步科技有限公司