在不同数据库服务器上的同一表之间复制/追加非匹配数据

时间:2012-02-07 23:33:55

标签: oracle11g

跟进我之前的query ,有没有办法指定使用同一个表上的列名复制的记录的条件?即我想将所有数据从沙盒服务器复制到生产服务器,以用于生产服务器中不存在沙箱中COL_A的所有行。所以预期的select查询应该是:

SELECT * FROM <Sandbox><TABLE_C> WHERE <Sandbox><TABLE_C>COL_A NOT EXISTS (SELECT <production>COL_A FROM <production>TABLE_C)

即。从沙箱到生产的所有记录,找不到匹配的COL_A

1 个答案:

答案 0 :(得分:1)

我不确定Oracle特定的语法,但是假设您能够将它们作为链接服务器访问 -

INSERT INTO TABLE_C@prod_link
SELECT source.*
FROM TABLE_C source
LEFT JOIN TABLE_C@prod_link target
    ON source.COL_A = target.COL_A
WHERE target.COL_A IS NULL

其中prod_link是数据库链接

CREATE PUBLIC DATABASE LINK 
  prod_link
CONNECT TO
  remote_username
IDENTIFIED BY 
  mypassword 
USING 'tns_service_name';

我没有运行Oracle实例,我可以尝试使用它,但它应该可以正常运行