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