本發(fā)明屬于互聯(lián)網(wǎng)開發(fā)技術(shù)領(lǐng)域,具體的說提供了一種周期性自動全量提取數(shù)據(jù)庫數(shù)據(jù)的方法。
背景技術(shù):
在國內(nèi),許多中小企業(yè)發(fā)展的局限性在于發(fā)展初期資金不足,IT基礎薄弱甚至忽略IT,僅隨著市場發(fā)展才逐漸引入信息化管理體系;其次,由于信息系統(tǒng)分散搭建,各部門之間互相孤立,信息不能有效溝通,使得企業(yè)發(fā)展大受掣肘;即便是有些企業(yè)意識到了整合信息系統(tǒng)的重要性,但是礙于巨大的投資壓力,所以并不敢輕易嘗試。最終,許多企業(yè)因此走入了“信息孤島”的困境,信息管理混亂,影響企業(yè)進一步發(fā)展。
隨著大數(shù)據(jù)時代來臨,信息管理對中小企業(yè)生存的重要作用逐漸凸顯出來,企業(yè)往往希望將各個孤立系統(tǒng)的數(shù)據(jù)整合到一個集中管理系統(tǒng)中。這就涉及到從孤立系統(tǒng)全量抽取數(shù)據(jù)到集中管理系統(tǒng)的問題。
對這些孤立系統(tǒng)的數(shù)據(jù)提取,要求不影響現(xiàn)有系統(tǒng)的運行,采用傳統(tǒng)的ETL(Extract-Transform-Load)工具,一般要求已有系統(tǒng)的數(shù)據(jù)表中有數(shù)值遞增的索引字段,根據(jù)遞增索引字段進行增量抽取,這一點往往無法保證,因此ETL工具一般只能一次性抽取全量數(shù)據(jù),以后新增數(shù)據(jù)無法處理了。
本發(fā)明提供了一種對傳統(tǒng)關(guān)系型數(shù)據(jù)進行周期性自動全量數(shù)據(jù)提取的方法,在不對現(xiàn)有系統(tǒng)進行改造的前提下,能夠?qū)F(xiàn)有系統(tǒng)中的數(shù)據(jù)周期性自動全量提取到集中管理系統(tǒng)中。
技術(shù)實現(xiàn)要素:
:
針對現(xiàn)有技術(shù)中存在的技術(shù)問題,本發(fā)明的目的在于提供一種周期性自動全量提取數(shù)據(jù)庫數(shù)據(jù)的方法。
本發(fā)明針對關(guān)系型數(shù)據(jù)庫,對需要抽取的數(shù)據(jù)表字段自定義了數(shù)據(jù)庫提取主鍵,使用提取主鍵周期性的從數(shù)據(jù)庫中提取數(shù)據(jù),并實時記錄下已提取記錄標識。在下個運行周期啟動時,從提取記錄標識開始繼續(xù)提取,從而達到全量提取數(shù)據(jù)的目的。
本發(fā)明的技術(shù)方案為:
一種周期性自動全量提取數(shù)據(jù)庫數(shù)據(jù)的方法,其步驟為:
1)從關(guān)系型數(shù)據(jù)庫系統(tǒng)的數(shù)據(jù)表中選取若干字段,將選取的每一字段的字段值左補若干位;選取的若干字段為能夠唯一標識一條記錄的若干字段;
2)將選取的字段組合作為該關(guān)系型數(shù)據(jù)庫系統(tǒng)的提取主鍵,將補齊后的值按字符串拼接在一起作為提取主鍵的值;
3)周期性從該關(guān)系型數(shù)據(jù)庫系統(tǒng)的數(shù)據(jù)表中進行數(shù)據(jù)提?。好看翁崛條記錄并記錄本次提取的最后一條記錄的提取主鍵值,下次提取時通過比對提取主鍵值獲取后面n條記錄,直至完成數(shù)據(jù)表中記錄的全量提取。
進一步的,左補的若干位均為0;左補若干位后的每一字段的長度均相同。
進一步的,左補若干位后的每一字段的長度均為20。
進一步的,選取的字段包括姓名、性別和生日字段。
進一步的,步驟3)中,每次提取記錄時,先根據(jù)提取主鍵的字段對記錄進行排序,然后提取n條記錄。
進一步的,對該關(guān)系型數(shù)據(jù)庫系統(tǒng)中單一數(shù)據(jù)表進行全量提取。
進一步的,將該關(guān)系型數(shù)據(jù)庫系統(tǒng)中多個數(shù)據(jù)表通過sql語句建立動態(tài)視圖,然后對該多個數(shù)據(jù)表進行全量提取。
進一步的,對提取出來的記錄進行定制化的轉(zhuǎn)換后存儲到一數(shù)據(jù)管理系統(tǒng)。
與現(xiàn)有技術(shù)相比,本發(fā)明的積極效果為:
本發(fā)明不要求已有系統(tǒng)的數(shù)據(jù)表定義數(shù)值自增的主鍵,也不需要對已有系統(tǒng)進行改造,就能夠周期性全量提取數(shù)據(jù)。
附圖說明
圖1是本發(fā)明實施例一提供的數(shù)據(jù)庫數(shù)據(jù)提取和標準化的流程圖。
具體實現(xiàn)方式
下面結(jié)合附圖和實施例對本發(fā)明做進一步的詳細說明??梢岳斫獾氖牵颂幩枋龅木唧w實施例僅僅用于解釋本發(fā)明,而非對本發(fā)明的限定。另外還需說明的是,為了便于描述,附圖中僅示出了與本發(fā)明相關(guān)的部分而非全部結(jié)構(gòu)。
實施例一
圖1為本發(fā)明實施例一提供的數(shù)據(jù)提取方法的流程圖。本實施例可適用于提取各種關(guān)系型數(shù)據(jù)庫系統(tǒng)中的數(shù)據(jù),具體包括如下步驟:
步驟101:定義數(shù)據(jù)庫提取主鍵
因為現(xiàn)有系統(tǒng)的數(shù)據(jù)庫表往往沒有數(shù)值自增字段,需要自定義提取主鍵。
自定義提取主鍵從數(shù)據(jù)表中任意選擇幾個可以唯一標識一條記錄的字段。將每個字段的值左補‘0’,使字段總長度至N位(N缺省為20位,舉例來說,字段值為ABC,左補17個‘0’,使字段值為‘00000000000000000ABC’),然后將補齊后的字段值按字符串拼接在一起作為提取主鍵的值。
舉例來說,如果有下面員工信息表(employee)和數(shù)據(jù),如表1:
表1為員工信息表
分析這個表的數(shù)據(jù),通過姓名,性別和生日可以唯一確定一條記錄,那么用這3個字段來構(gòu)造提取主鍵,每條記錄的提取主鍵的值分別為:
000000000000000000張三0000000000000000000男00000000000019850810
000000000000000000王飛0000000000000000000男00000000000019890110
000000000000000000王飛0000000000000000000女00000000000019900704
000000000000000000王飛0000000000000000000男00000000000019850321
步驟102:提取數(shù)據(jù):
提取數(shù)據(jù)按批次提取,可以針對單一數(shù)據(jù)表提取,也可以將多個表的數(shù)據(jù)通過sql語句建立動態(tài)視圖進行提取。
每次提取,先根據(jù)提取主鍵的字段對記錄進行排序,然后提取n條,完成n條記錄的提取后,記錄最后一條記錄的提取主鍵值,下次提取通過比對提取主鍵的值,獲取后面n條記錄,周期往復完成表數(shù)據(jù)的全量提取。
舉例來說,提取表1中的數(shù)據(jù),將n設置為3,第一次提取前3條記錄,并記錄最后提取的的記錄主鍵值為“000000000000000000王飛0000000000000000000女00000000000019900704”,下一次提取時,計算表中記錄的主鍵值,將主鍵值大于“000000000000000000王飛0000000000000000000女00000000000019900704”的后n條記錄提取出來。
通過上面方法提取出來的記錄保存成集中管理系統(tǒng)要求的數(shù)據(jù)格式(見步驟103),并將最后一條記錄的提取主鍵值記錄下來(見步驟104)。
步驟103:轉(zhuǎn)換提取數(shù)據(jù)為集中管理系統(tǒng)數(shù)據(jù)格式。
將第102步查詢到的數(shù)據(jù)轉(zhuǎn)換成集中管理系統(tǒng)要求的格式,在本發(fā)明的例子中,假設集中管理系統(tǒng)要求性別使用字典碼(男用0表示,女用1表示),生日必須是YYYY-MM-DD格式(這里僅僅是舉例,實際情況比較復雜,可能要關(guān)聯(lián)補充其他信息,比如需要從B表中關(guān)聯(lián)出工作崗位和工資標準,那么需要通過SQL關(guān)聯(lián)查詢語句構(gòu)造出動態(tài)視圖,然后針對動態(tài)視圖進行提取,而不是簡單的格式轉(zhuǎn)換),那么可以針對提取出來的記錄進行定制化的轉(zhuǎn)換,轉(zhuǎn)換后的數(shù)據(jù)供集中管理系統(tǒng)使用。如下是轉(zhuǎn)換后的數(shù)據(jù):
張三0 1985-08-10西城區(qū)xx小區(qū)A樓1708室信息化部
王飛0 1989-01-10海淀區(qū)xx小區(qū)B樓1001室運維部
王飛1 1990-07-04東城區(qū)xx小區(qū)C樓2001室財務部
步驟104:記錄提取數(shù)據(jù)位置。
將第2步提取出來的最后一條記錄的提取主鍵值記錄下來,比如:
EMPLOYEE_datasource=000000000000000000王飛0000000000000000000女00000000000019900704
步驟105:周期提取
設置一個提取周期,比如每10分鐘啟動一次提取,下次提取時比對上次提取到的最后一條記錄的主鍵值,獲取后面的n條記錄,從而實現(xiàn)周期性抽取數(shù)據(jù)。
代碼示例:
通過配置文件配置抽取策略:
屬性說明如表2所示:
表2為屬性說明表