1、首先寫一個存儲過程。
2、然后新建一個執行任務(jobs)調用存儲過程就可以同步數據了。
3、如何同步數據
(1) 首先第一步:同步數據(把舊表的新增的數據導入到新表里面,注意這個sql語句只是同步了新增(用戶名)的數據,並沒有同步更改過的最新的數據(例如age修改之后並沒有同步過去,新表的age還是原來的數據))
INSERT INTO NEW_TABLE SELECT USERNAME,PASSWORD,AGE FROM OLD_TABLE b WHERE b.USERNAME not in (select USERNAME from NEW_TABLE)
如果想取age修改過的最新數據,可以加一個age的判斷條件,這樣就能去最新的age的數據
INSERT INTO NEW_TABLE SELECT USERNAME,PASSWORD,AGE FROM OLD_TABLE b WHERE b.USERNAME not in (select USERNAME from NEW_TABLE) or b.age not in (select age from NEW_TABLE);
如果還有其他的數據,同理跟上面一樣即可。
(2) 第二步就是去重,把用戶名重復的數據去掉。
delete from NEW_TABLE a where a.rowid != (select max(b.rowid) from NEW_TABLE b where a.USERNAME = b.USERNAME);
(3) 這樣就可以去到最新的數據了。
以上的方法只是針對我現在的表(沒有主鍵)進行描述。具體的表結構可能不太適用。
1、如果表存在主鍵,即用戶名是唯一的話,那個顯然是不能這樣做的。因為唯一的話就沒有去重的必要了。
2、如果表存在好多字段的話,也不太適用。因為同步的時候使用太多的not in 語句也不好
以上是新表同步舊表的數據的一種方式,並沒有在舊表做任何的操作(使用這種方式的一個原因是要同步另一個別人的數據表,只提供了一個dblink,而且別人不同意在自己的表上做任何的操作).還有一種更簡單的方法就是在舊表上使用觸發器,這樣就更簡單同步數據了,不過前提要別人同意。
