在不同模式中同步具有相同结构的两个Oracle表

时间:2018-11-21 17:17:42

标签: oracle oracle12c

我在模式A中有users表,在模式B中有一个表。 我的应用程序已连接到架构A,因此新数据将添加到架构A的表中。 我需要做的是编写一个带有作业的过程,以便每晚将新行带入架构B中的表。 我很困惑使用什么,尽管我已经看到了多种方法,例如光标,合并或更新和插入。

那么对我来说,最好的解决方案是什么?

我这样想:

update db.B.users
 set{
      db.B.users.Id = db.A.Id,
      db.B.users.name= db.A.name,
        ....}
 from A
    JOIN B ,A on db.B.users.Id = db.A.Id

然后将不同的记录插入B表中

1 个答案:

答案 0 :(得分:0)

符合您要求的MERGE语句看起来像这样。

我假设users.Id在表A中是唯一的。

MERGE INTO schemaB.users b 
USING schemaA.users a
     ON ( a.Id = b.ID )
WHEN MATCHED THEN UPDATE 
 SET b.name = a.name,  --Don't update ID( you can't )
     b.othercolumn = a.column
    --all other columns
WHEN NOT MATCHED THEN INSERT (
     id,
     name,
     othercolumns ) VALUES (
     a.id,
     a.name,
     a.othercolumns );