zoukankan      html  css  js  c++  java
  • 从远程oracle上导入到本地同一张表中不存在的记录的方法

    场景:在远程oracle上存在一张表A,在本地同样存在一张相同表结构的表B。由于本地表B中保存了业务系统操作产生的几条记录,同时原来导入了A中的部分记录,但是并没有保存A中全部的记录。A中有15条记录,B中保存了A中3条记录同时B中还有本地业务系统产生的4条记录,不能删除B中的业务系统产生的4条记录。现在想将A中的另外的12条记录导入B中,同时有能保留B中原来的由业务系统产生的4条记录。

    解决sql:

    1、先在A中获得在B中出现过的记录。

      select * from A@dblink_name a where exists

          (select * from B b wherer b.colume1=a.colume1 and b.colume2=a.colume2 and b.colume3=a.colume3)

    2、获得A中在B中没有出现过的记录 exists替换为not exists;

    3、将没有在B中出现过的记录插入A中

      insert into B

        select * from A@dblink_name a where not exists

          (select * from B b wherer b.colume1=a.colume1 and b.colume2=a.colume2 and b.colume3=a.colume3);

    注:使用此方法导入数据可以避免导入重复记录的数据(表中不存在主键约束的情况下)。如果表中存在关于某个字段的主键约束的情况下,如果不按照区分不存在数据的方法导入的话是违反主键约束的。

  • 相关阅读:
    CEAC认证
    CEAC认证
    java 和.net 开发平台的感受(菜鸟级)
    NBA现场直播在线看
    NBA现场直播在线看
    CEAC认证
    NBA现场直播在线看
    NBA现场直播在线看
    选择冒泡排序
    折半查找法
  • 原文地址:https://www.cnblogs.com/moonfans/p/3836483.html
Copyright © 2011-2022 走看看