專利名稱:一種通用sql數(shù)據(jù)處理方法和系統(tǒng)的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及數(shù)據(jù)倉庫領(lǐng)域,特別涉及數(shù)據(jù)倉庫領(lǐng)域的數(shù)據(jù)遷移。
背景技術(shù):
現(xiàn)有技術(shù)一通過在數(shù)據(jù)庫中寫相關(guān)的存儲過程或函數(shù)來對數(shù)據(jù)進行計算、匯總、清洗轉(zhuǎn)換的。對于DB2,SYBASE, ORACLE, GREENPLUM, TERDATA這類數(shù)據(jù)倉庫環(huán)境,現(xiàn)有技術(shù)方案都是通過在DB2,SYBASE, ORACLE, GREENPLUM, TERDATA內(nèi)部寫大量的存儲過程,函數(shù)對 已有數(shù)據(jù)進行計算,再把計算后的數(shù)據(jù)插入到自身的數(shù)據(jù)倉庫環(huán)境中。對于這些內(nèi)部的存儲過程和函數(shù)在創(chuàng)建或發(fā)生修改時,需要編譯后再運行,否則不會生效?,F(xiàn)有技術(shù)一的缺點是所有的存儲過程或函數(shù)在發(fā)生任何修改后都需要重新編譯一次才能使最新的修改生效,而且還會涉及到存儲過程,函數(shù)依賴的情況,如果有存儲過程,函數(shù)依賴,所有依賴的存儲過程和函數(shù)也要重新編譯才能生效,否則在執(zhí)行時會報錯,這樣維護起來會非常得麻煩,不利于管理和維護,同時也給數(shù)據(jù)倉庫帶來一定壓力?,F(xiàn)有技術(shù)二 通過在外部perl,shell里面嵌套SQL語句對數(shù)據(jù)庫的數(shù)據(jù)進行計算,清洗。在外部的perl,shell程序中,嵌套每種類型的數(shù)據(jù)庫的SQL語句,在外部環(huán)境下直接運行,不需要編譯peri, shell程序,當執(zhí)行perl, shell程序時,里面嵌套的SQL會被提交到數(shù)據(jù)庫中執(zhí)行,把運行完成的數(shù)據(jù)再插入到自身數(shù)據(jù)庫中的目標表中?,F(xiàn)有技術(shù)二的缺點是每種類型數(shù)據(jù)庫的SQL語句的語法和用法都各不一樣,而外部perl,shell程序里面嵌套的SQL只支持一種數(shù)據(jù)庫環(huán)境,所以不支持跨平臺異構(gòu)數(shù)據(jù)庫環(huán)境,當程序遷移到另外一種數(shù)據(jù)庫環(huán)境中時,所有的perl,shell程序要全部進行修改以支持新的數(shù)據(jù)庫環(huán)境。所以遷移的時候改動的工作量很大,不能實現(xiàn)一套代碼在所有數(shù)據(jù)庫環(huán)境中都能運行。
發(fā)明內(nèi)容
本發(fā)明所要解決的技術(shù)問題是提供一種可不用編譯,直接在外部執(zhí)行,代碼不用做任何修改即可在不同數(shù)據(jù)庫中運行,沒有任何其阿姨成本和修改量的通用SQL數(shù)據(jù)處理方法和系統(tǒng)。本發(fā)明解決上述技術(shù)問題的技術(shù)方案如下一種通用SQL數(shù)據(jù)處理方法,它包括以下步驟①安裝TCL腳本;②當執(zhí)行TCL腳本時,讀取數(shù)據(jù)庫連接配置文件;③當成功連接到目標數(shù)據(jù)庫后,讀取與目標數(shù)據(jù)庫函數(shù)相對應(yīng)的TCL函數(shù)映射文件;④用TCL函數(shù)映射文件將TCL腳本中對應(yīng)的TCL函數(shù)進行解析,生成目標數(shù)據(jù)庫函數(shù);⑤將生成的目標數(shù)據(jù)庫函數(shù)和SQL語句提交到目標數(shù)據(jù)庫執(zhí)行。
在上述技術(shù)方案的基礎(chǔ)上,本發(fā)明還可以做如下改進。進一步,所述所述步驟①為root用戶執(zhí)行以下步驟a、解壓SQL系統(tǒng)的程序包;b、打開目錄;C、生成配置文件;d、編譯;e、安裝。進一步,所述配置文件包括對應(yīng)的目標數(shù)據(jù)類型和連接參數(shù)信息,用于連接和匹配目標數(shù)據(jù)庫。一種通用SQL數(shù)據(jù)處理系統(tǒng),它包括安裝模塊、讀取模塊、讀取模塊、解析模塊、執(zhí)行模塊,其中,安裝模塊,用于安裝TCL腳本;讀取配置文件模塊,用于當執(zhí)行TCL腳本時,讀取數(shù)據(jù)庫連接配置文件;讀取映射文件模塊,用于當成功連接到目標數(shù)據(jù)庫后,讀取與目標數(shù)據(jù)庫函數(shù)相對應(yīng)的TCL函數(shù)映射文件;解析模塊,用TCL函數(shù)映射文件將TCL腳本中對應(yīng)的TCL函數(shù)進行解析,生成目標數(shù)據(jù)庫函數(shù);執(zhí)行模塊,將生成的目標數(shù)據(jù)庫函數(shù)和SQL語句提交到目標數(shù)據(jù)庫執(zhí)行;進一步,所述安裝模塊包括解壓子模塊,打開目錄子模塊,生成配制文件子模塊,編譯子模塊,安裝子模塊。進一步,所述讀取配置文件模塊中的配置文件包括對應(yīng)的目標數(shù)據(jù)類型和連接參數(shù)信息的文件,用于連接和匹配目標數(shù)據(jù)庫。采用上述方案的有益效果是通過將TCL腳本中的TCL函數(shù)映射成目標數(shù)據(jù)庫函數(shù)在倒目標數(shù)據(jù)庫執(zhí)行,這種方法不用編譯,不用在數(shù)據(jù)庫中編寫任何存儲過程或函數(shù),直接在外部執(zhí)行,可以支持跨平臺異構(gòu)數(shù)據(jù)庫環(huán)境,實現(xiàn)一套代碼不用做任何修改即可以不同的數(shù)據(jù)庫中運行,沒有任何遷移成本和修改量。
圖I為本發(fā)明整體步驟流程圖;圖2為本發(fā)明TCL函數(shù)與數(shù)據(jù)庫函數(shù)映射示意具體實施例方式以下結(jié)合附圖對本發(fā)明的原理和特征進行描述,所舉實例只用于解釋本發(fā)明,并非用于限定本發(fā)明的范圍。如圖I所示,通用SQL數(shù)據(jù)處理方法包括以下步驟①安裝TCL腳本;
在Iinux下安裝IS/BI-GSQL通用SQL系統(tǒng)的程序包tar xzvf dwpro. tar. gztar xzvf dwtools. tar. gz
②當執(zhí)行TCL腳本時,讀取數(shù)據(jù)庫連接配置文件;修改數(shù)據(jù)庫連接配置文件vi/datal/dwdev/dwpro/etc/common, cfg③當成功連接到目標數(shù)據(jù)庫后,讀取與目標數(shù)據(jù)庫函數(shù)相對應(yīng)的TCL函數(shù)映射文件;#oracle數(shù)據(jù)庫連接設(shè)置set dbName_oracle dwtest3set dbUser_oracle dwset dbPassword_oracIe 340ilB2hlQ8j106g#SyIQ數(shù)據(jù)庫連接設(shè)置set dbName_sybaseiq asiqdemoset dbUser_sybaseiq dbaset dbPassword_sybaseiq sql#Postgres數(shù)據(jù)庫連接設(shè)置setdbName_postg" vipshop 192. 168. 0. 19:54321 vipshop :6o069L0D0g9WlP06222"set dbUser_pos tg""set dbPassword_postg""set TMPTBSPACE""set TMPINDXTBSPACE""④用TCL函數(shù)映射文件將TCL腳本中對應(yīng)的TCL函數(shù)進行解析,生成目標數(shù)據(jù)庫函數(shù);編寫TCL程序,在TCL程序中調(diào)用通用SQL的TCL函數(shù)st_trd_sts_total_rpt_ws_update.tcl 調(diào)用[tcl_func_char_to_timestamp1 $ {f irstday_week} 1 ]這個函數(shù)。⑤將生成的目標數(shù)據(jù)庫函數(shù)和SQL語句提交到目標數(shù)據(jù)庫執(zhí)行。執(zhí)行TCL程序/datal/dwdev/dwpro/bin/dss_postg-ul-vl-sst_trd_sts_total_rpt_ws_update, tcl-t 20110923-O當在greenplum數(shù)據(jù)庫環(huán)境下執(zhí)行時tcl_func_char_to_timestamp函數(shù)會被映射成greenplum的to_timestamp數(shù)據(jù)庫函數(shù),從而可以正常運行。所述所述步驟①為root用戶執(zhí)行以下步驟a、解壓SQL系統(tǒng)的程序包;b、打開目錄;c、生成配置文件;d、編譯;e、安裝TCL腳本。所述配置文件包括對應(yīng)的目標數(shù)據(jù)類型和連接參數(shù)信息,用于連接和匹配目標數(shù)據(jù)庫。 圖2為通過每種類型的數(shù)據(jù)庫與TCL函數(shù)映射文件,TCL中創(chuàng)建的通用SQL的TCL函數(shù)就可以與db2, Sybase, oracle, greenplum, teradata數(shù)據(jù)庫中的函數(shù)相對應(yīng)起來,而在TCL腳本中是調(diào)用封裝好的TCL函數(shù),所以就不存在連不同的數(shù)據(jù)庫,SQL中函數(shù)會不一樣,這樣就全部統(tǒng)一起來,便于代碼遷移和跨平臺進行運行TCL程序。
以上所述僅為本發(fā)明的較佳實施例,并不用以限制本發(fā)明,凡在本發(fā)明的精神和原則之內(nèi),所作的任何修改、等同替換、改進等,均應(yīng)包含在本發(fā)明的保護范圍之內(nèi)。
權(quán)利要求
1.ー種通用SQL數(shù)據(jù)處理方法,其特征在于,它包括以下步驟 ①安裝TCL腳本; ②當執(zhí)行TCL腳本吋,讀取數(shù)據(jù)庫連接配置文件; ③當成功連接到目標數(shù)據(jù)庫后,讀取與目標數(shù)據(jù)庫函數(shù)相對應(yīng)的TCL函數(shù)映射文件; ④用TCL函數(shù)映射文件將TCL腳本中對應(yīng)的TCL函數(shù)進行解析,生成目標數(shù)據(jù)庫函數(shù); ⑤將生成的目標數(shù)據(jù)庫函數(shù)和SQL語句提交到目標數(shù)據(jù)庫執(zhí)行。
2.根據(jù)權(quán)利要求I所述的通用SQL數(shù)據(jù)處理方法,其特征在于,所述步驟①為root用戶執(zhí)行以下步驟 a、解壓SQL系統(tǒng)的程序包; b、打開目錄; C、生成配置文件; d、編譯; e、安裝。
3.根據(jù)權(quán)利要求I所述的通用SQL數(shù)據(jù)處理方法,其特征在于所述配置文件包括對應(yīng)的目標數(shù)據(jù)類型和連接參數(shù)信息,用于連接和匹配目標數(shù)據(jù)庫。
4.ー種通用SQL數(shù)據(jù)處理系統(tǒng),其特征在于,它包括安裝模塊、讀取模塊、讀取模塊、解析模塊、執(zhí)行模塊,其中, 安裝模塊,用于安裝TCL腳本; 讀取配置文件模塊,用于當執(zhí)行TCL腳本時,讀取數(shù)據(jù)庫連接配置文件; 讀取映射文件模塊,用于當成功連接到目標數(shù)據(jù)庫后,讀取與目標數(shù)據(jù)庫函數(shù)相對應(yīng)的TCL函數(shù)映射文件; 解析模塊,用TCL函數(shù)映射文件將TCL腳本中對應(yīng)的TCL函數(shù)進行解析,生成目標數(shù)據(jù)庫函數(shù); 執(zhí)行模塊,將生成的目標數(shù)據(jù)庫函數(shù)和SQL語句提交到目標數(shù)據(jù)庫執(zhí)行。
5.根據(jù)權(quán)利要求4所述的通用SQL數(shù)據(jù)處理系統(tǒng),其特征在于所述安裝模塊包括解壓子模塊,打開目錄子模塊,生成配制文件子模塊,編譯子模塊,安裝子模塊。
6.根據(jù)權(quán)利要求4所述的通用SQL數(shù)據(jù)處理系統(tǒng),其特征在于所述讀取配置文件模塊中的配置文件包括對應(yīng)的目標數(shù)據(jù)類型和連接參數(shù)信息的文件,用于連接和匹配目標數(shù)據(jù)庫。
全文摘要
本發(fā)明涉及一種通用SQL數(shù)據(jù)處理方法及系統(tǒng),它包括以下步驟①安裝TCL腳本;②當執(zhí)行TCL腳本時,讀取數(shù)據(jù)庫連接配置文件;③當成功連接到目標數(shù)據(jù)庫后,讀取與目標數(shù)據(jù)庫函數(shù)相對應(yīng)的TCL函數(shù)映射文件;④用TCL函數(shù)映射文件將TCL腳本中對應(yīng)的TCL函數(shù)進行解析,生成目標數(shù)據(jù)庫函數(shù);⑤將生成的目標數(shù)據(jù)庫函數(shù)和SQL語句提交到目標數(shù)據(jù)庫執(zhí)行。本發(fā)明的特點是支持多種異構(gòu)數(shù)據(jù)源,在多種數(shù)據(jù)庫中能夠?qū)崿F(xiàn)一套代碼不用作任何修改就能運行并且可以保證實現(xiàn)的功能和最終數(shù)據(jù)一致。通過自定義SQL標準為企業(yè)解決了數(shù)據(jù)遷移過程中大量程序代碼修改的難題,減少了人力、財力投入。
文檔編號G06F17/30GK102629277SQ20121007686
公開日2012年8月8日 申請日期2012年3月21日 優(yōu)先權(quán)日2012年3月21日
發(fā)明者官輝, 李俊, 魯超, 齊科軍 申請人:北京英孚斯邁特信息技術(shù)有限公司