簡體   English   中英

將新記錄從一個數據庫復制到另一個數

[英]Copy new records from one database to another

我有本地和遠程數據庫。 本地數據庫是遠程數據庫的副本。 我必須將遠程數據庫中的新記錄插入本地數據庫。 遠程數據庫中有14個表,因此我需要跟蹤所有14個表中的更改。

我知道我可以選擇遠程數據庫中的每個表,如果沒有,則檢查本地數據庫中是否存在記錄然后插入。

還有另一種方法嗎? 在java中可能嗎? 什么方法最好?

讓我們從DBlink開始到遠程數據庫

CREATE PUBLIC DATABASE LINK REMO
CONNECT TO <user_name>
IDENTIFIED BY <password>
USING '<service_name>';

然后在用戶模式的所有表中插入循環。 或者如果您只想插入一些表,請為這14個表定義適當的條件。

begin

for x in (select table_name from user_tables) loop
execute immediate 'insert into ' || x.table_name || ' (select * from ' || x.table_name || '@REMO minus select * from ' || x.table_name || ')';

commit;
end loop;
end;
/

這將僅插入新記錄(實際上是在遠程上存在(或已更改)的記錄而在本地不存在)。 如果這是你需要的,這將是有效的。 如果您需要同步,這不是解決方案。

如果您只有一個本地數據庫並且它一直運行 - 您可以使用遠程數據庫中的觸發器插入到本地數據庫。

BTW:從本地去手動檢查遠程不是一個好主意。 如果現有遠程記錄發生了變化,但本地仍有舊值,該怎么辦?

還有一堆Oracle工具可以在數據庫之間進行復制和同步。 最好深入挖掘。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM