oracle的數據同步


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,而且別人不同意在自己的表上做任何的操作).還有一種更簡單的方法就是在舊表上使用觸發器,這樣就更簡單同步數據了,不過前提要別人同意。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM