HubbleDotNet自動與Oracle中的資料同步解析

來源:互聯網
上載者:User

轉自:

http://www.cnblogs.com/zhaoDotNet/archive/2010/09/17/1829509.html

作者:ZhaoDotNet

感謝 ZhaoDotNet 無私分享他的經驗。 

 

近一段時間在網路中遇到了HubbleDotNet 的創始人,應他的請求,第一次在cnblog中寫部落格,先將我昨天學到的貼上來,希望能夠了幫到更多使用HubbleDotNet的人們;

  昨天在創始人的協助下,我完成了Hubble同Oracle之間資料的同步問題,寫這篇文章,主要是完善HubbleDotNet 的創始人沒有寫對Oracle資料庫即時同步的文章,現誠心奉上;

  首先,在Hubble中建立與oracle對應的表,

下一步,點擊Next按鈕

點擊Next按鈕

這裡說明一下,ID Field寫的一定是唯一標識的主鍵,並且必須是整型(oracle中是NUMBER型)的,我定義的是BUFFERID, 因為Oracle中沒有自增長功能,所有請朋友們自己寫個觸發器或者別的方法讓它自增,實現了就可以;還有一點就是如我的主鍵DataType必須選擇為Int,Analyzer必須為Untokenized,至此即完成了建立Hubble表的過程,如果想實現資料的同步,接著往下看;

  為了讓資料庫中的資料與Hubble資料同步,我們先在Oracle中建立一個輔助觸發表,主要的功能是記錄T_Goods表中哪些欄位的內容發生了變化的,將改變的欄位記錄到輔助觸發表中,代碼如下:

-- Create table
create table HBTRIGGER_VIEW_6
(
  SERIAL NUMBER(10) not null,
  ID     NUMBER(10) not null,
  OPR    VARCHAR2(20),
  FIELDS VARCHAR2(4000)
)
tablespace USERS
  pctfree 10
  initrans 1
  maxtrans 255
  storage
  (
    initial 64K
    minextents 1
    maxextents unlimited
  );
-- Create/Recreate primary, unique and foreign key constraints
alter table HBTRIGGER_VIEW_6
  add constraint PK_SERIAL primary key (SERIAL)
  using index
  tablespace USERS
  pctfree 10
  initrans 2
  maxtrans 255
  storage
  (
    initial 64K
    minextents 1
    maxextents unlimited
  );

說明:表中的SERIAL為主鍵,必須是自增的整形欄位;ID 不可定義為別的名稱(經驗);

對於如何將改變的內容欄位記錄下來,我寫了一個觸發器,代碼如下:

create or replace trigger HBTrigger_T_6_Update
after  update on FOR EACH ROW
DECLARE
updateFields VARCHAR2(4000) :='';
begin
if :new.GOODS_NAME !=:old.GOODS_NAME then
updateFields:='GOODS_NAME,';
END IF;

if :new.GOODS_BRAND !=:old.GOODS_BRAND then
updateFields:=updateFields||'GOODS_BRAND,';
END IF;
.
.//中間需要的欄位自己加吧
.
if updateFields is not null then
  insert into HBTRIGGER_VIEW_6(ID,Opr,Fields) values(:new.BUFFERID,'Update', updateFields) ;
end if;
end HBTrigger_T_6_Update;

這時修改了T_GOODS中的欄位後,輔助觸發表是就發生了如下變化:

這些工作完成後,我們轉到Hubble,

現在我們在剛才建好的T_Goods表上右擊,選擇Table Info,開啟Attributes選項框,將TableSynchronization改為True,TriggerTableName填寫我們剛建立的輔助觸發表名,點擊Set完成;

現在我們進行同步操作,在剛才建好的T_Goods表上右擊,選擇Synchronize Table,點擊Start,結果如,

現在你查詢一下你的Hubble記錄,是不是跟Oracle表中的記錄一樣呢,當然這些工作我們也可以在程式中完成,具體的怎麼寫,請查看Hubble創始人的部落格http://www.cnblogs.com/eaglet/archive/2010/08/25/1808143.html。

如果你看完這篇文章覺得寫觸發器麻煩,在此,也有專門為懶人準備的簡單的操作方法,只需要兩步:

一、在剛才建好的T_Goods表上右擊,選擇Truncate Table;

二、在剛才建好的T_Goods表上右擊,選擇Synchronize Table,點擊Start;

這樣操作只是費點時間,不過對於懶人來說,最不珍惜的就是時間,也無所謂了;

如果你在中間的某些操作出現問題,請留言。也可下載最新的Hubble版本,隨時更新;

註:如轉載請標明出處(eaglet除外)

 

返回 Hubble.net 技術詳解

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.