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);

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

  • 相关阅读:
    SNMP概述–运维必知的协议基础
    关于多线程情况下Net-SNMP v3 版本导致进程假死情况的跟踪与分析
    关于snmp octet string和普通string问题
    SVN状态说明
    SNMP mib文件说明
    Linux之 proc文件系统
    django .all .values .value_list 数据库获取数据
    Django form验证
    JSONP实现
    iframe和form表单实现ajax请求上传数据
  • 原文地址:https://www.cnblogs.com/moonfans/p/3836483.html
Copyright © 2011-2022 走看看