1樓:曾經黃過
你可以寫些儲存過程來執行判斷兩庫之間表內容是否一致?不一致就插入!然後建立作業根據情況執行!
如果你是sql2008的話也可以用這個方法!也可以用複製功能等!看你個人情況吧!
同步資料表少就用第一種吧!我感覺配置和效率上還可以!
如何實現oracle兩個資料庫之間的同步
2樓:千鋒教育
為方便完成指定資料表的同步操作,可以採用dblink與merge結合的方法完成。
操作環境: 此資料庫伺服器ip為192.168.
196.76,有center與branch兩個庫,一般需要將center的表資料同步到branch,center為源庫,branch為目標庫,具體步驟如下:
1.在源庫建立到目標庫的dblink
create database link branch --輸入所要建立dblink的名稱,自定義
connect to dbuser identified by 「password」 --設定連線遠端資料庫的使用者名稱和密碼
using '192.168.196.76/branch'; --指定目標資料庫的連線方式,可用tns名稱
在建立dblink時,要注意,有時候可能會報使用者名稱和密碼錯誤,但實際上我們所輸入的賬戶資訊是正確的,此時就注意將密碼的大小寫按伺服器上所設定的輸入,並在賬號密碼前號加上雙引號(伺服器版本不同造成的)。
2.成功後驗證dblink
select * from tb_bd_action@branch; --查詢建立好的brach庫
正常情況下,如果建立dblink成功,可採用該方式訪問到遠端資料庫的表.
3.通過merge語句完成表資料同步
此例中需要將center庫中的tb_sys_sqlscripe表同步到branch,簡單的語法如下:
merge into tb_sys_sqlscripe@branch b using tb_sys_sqlscripe c on (b.pk=c.pk) --從center將表merge到branch,同步的依據是兩個表的pk
when matched then update set b.sqlscripe=c.sqlscripe,b.
author=c.author --如果pk值是相同則將指定表的值更新到目標表
when not matched then --如果pk值不一至,則將源表中的資料整條插入到目標表中
insert values (c.pk, c.fk, c.
createtime, c.lastmodifytime,c.author,c.
module,c.deleteflag, c.scripttype);
commit; --記得merge後必須commit,否則更改未能提交
4.為方便每次需要同步時自動完成同步工作,可將該語句做成儲存過程或指令碼來定時執行或按要求手動執行,簡單說一下建立指令碼的方法:
a.建立merge資料夾
b.先將merge語句寫完整後,存到merge.sql檔案中
c.新建merge.bat檔案,編輯後寫入以下內容
sqlplus user/password@serverip/database @"%cd%\merge.sql"
關於mysql資料庫兩個表資料對比問題
insert into t2 a,b,c select a,b,c from t1 where concat a,b,c not in select concat a,b,c from t2 注意 以上語句不能處理a,b,c中有null值的情況。 不建議圖省事,老老實實寫三條比較好。insert i...
MYSQL資料庫怎麼用?如何匯入MySQL資料庫?
建立下乙個sqlyog,這個很容易入門,有中文簡體版的,樓上固然好,但是對於初學者不是太合適。如何匯入mysql資料庫?3 如果sql檔案的內容中有建立資料庫的語句,或者想將表存放在已有的資料庫,在這裡就不用建立資料庫。6 開始匯入sql檔案,輸入 source sql檔案的路徑 注意檔案路徑要是複...
mysql資料庫如何執行sql語句
select a drclass1,b drclass2,c drclass3,d drclass4,e drclass5 from teacher where teacherid teacherid create table classname classname char 50 insert i...