繁体   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