现有需求如下,业务组织单元表中id字段数据在另外一个系统全部重复,但需要将此业务单元组织导入另一系统

业务组织单元表Isc_Specialorg_Unit

表中存在ID字段为子节点数据,parent_id为父节点数据,orgpath为组织路径

现在做如下操作:

1.创建临时表

create table test as select * from Isc_Specialorg_Unit t

2.在test表中增加三列id1,parent_id1,orgpath1

alter table test add (id1 varchar(32));
alter table test add (parent_id1 varchar(32));
alter table test add (or1 varchar(32));

3.更新id1列为随机数据

update test set id1=SYS_GUID()

4.根据表test在创建临时表test1

create table test1 as  select * from test tselect 'create table test1 as select '|| wm_concat(column_name) || ' from test' sqlStr   from user_tab_columns where table_name='test';

5.根据id列,parent_id列,id1,更新parent_id1列的值为id1的值

merge into test k
using (select a.id1,a.id from test1 a) kk
on (k.parent_id=kk.id)
when matched then update set k.parent_id1=kk.id1

6.将test中id列和parent_id列删掉

alter  table test drop column id;
alter  table test drop column parent_id;

7.修改id1为id,pranent_id1为parent_id,获取组织路径并创建表test3

create table test3 as
select distinct a.id ,sys_connect_by_path(id,'/') orgpath from test a start with a.id='1'connect by prior  a.id=a.parent_id

7.根据test3表将组织路径保存至test的orgpath中

merge into test b
using
(
select a.id,a.orgpath from test3 a
) kk
on (b.id=kk.id)
when matched then update set b.orgpath=kk.orgpath

8.导出表test为sql文件,删掉表 drop test;drop test1;drop test3导入另一系统数据库

备注:

select ... from <TableName>

  where <Conditional-1>

  start with <Conditional-2>

  connect by <Conditional-3>

connect by中的条件就表示了父子之间的连接关系,比如 connect by id=prior  pid

LEVEL伪列表示树的深度(或叫高度)

其中 connect by 与 start with 语句摆放的先后顺序不影响查询的结果,[where 条件1]可以不需要,若是出现则要放在 connect by 与 start with 语句之前,否则出错

[where 条件1]、[条件2]、[条件3]各自作用的范围都不相同:

[where 条件1]

是在根据“connect by [条件2] start with [条件3]”选择出来的记录中进行过滤,是针对单条记录的过滤, 不会考虑树的结构(最后的过滤);

[ connect by 条件2]

指定构造树的条件,以及对树分支的过滤条件,在这里执行的过滤会把符合条件的记录及其下的所有子节点都过滤掉;

[ start with 条件3]

限定作为搜索起始点的条件,如果是自上而下的搜索则是限定作为根节点的条件,如果是自下而上的搜索则是限定作为叶子节点的条件;

要根据connect by 从上到下还是从下到上,来确定起始节点,可能是叶节点,也可能是父节点,这些开始节点可以是多个,并且包含这些节点。

层级查询语句(hierarchical query)中,where子句先被执行,再执行CONNECT BY子句以及其附属子句

1、这里说的节点指的是层级查询语句(hierarchical query)中from子句里的表的每一数据行。

2、层级查询语句(hierarchical query)中,CONNECT BY子句是必选的,而START WITH子句是可选的,START WITH子句是用来修饰CONNECT BY子句的,若该子句被省略,则表示所有满足查询条件(即where子句里的条件)的行作为根节点

3、prior关键字放在CONNECT BY子句中。其中用PRIOR表示上一条记录,比如 CONNECT BY PRIOR id = parent_id就是说上一条记录的id 是本条记录的parent_id,即本记录的父亲是上一条记录,prior放在connect by子句连接条件里的哪一边,哪一边就是父节点的编号值的来源,而connect by子句连接条件里等号另一边就是记录一数据行其对应的父节点的编号值

START WITH 子句和CONNECT BY子句是两个相互独立的子句,即并没有规定START WITH 子句出现的列就是要为CONNECT BY子句里那个带有关键字prior的列,START WITH 子句出现的列可以来自表里的任何列,也就是说START WITH 子句出现的列可以没有在START WITH 子句里出现,因为START WITH 子句的作用就是根据START WITH 子句的限定条件来筛选出哪些数据行作为根节点而已
start with子句不是一个独立的子句,即start with子句是一个不能单独出现在SQL语句的子句,必须在SQL语句中出现了connect by子句后,才能出现

当connect by子句的条件里出现的字段是普通字段,不是伪列字段rownum或是level时,connect by子句的条件里的表达式必须要有prior运算符 放在一个字段的前面;当connect by子句的条件里出现的是伪列字段rownum或是level时,connect by子句的条件里的表达式不用出现prior运算符

oracle迁移父子数据相关推荐

  1. oracle tns 代理配置_OGG实现Oracle到MySQL数据平滑迁移

    技术分享 | 使用OGG实现Oracle到MySQL数据平滑迁移 - 爱可生开源社区​opensource.actionsky.com 一.OGG概述 OGG全称为Oracle GoldenGate, ...

  2. oracle怎么将一列挪到另一列,详细讲解Oracle数据库的数据迁移方法

    <详细讲解Oracle数据库的数据迁移方法>由会员分享,可在线阅读,更多相关<详细讲解Oracle数据库的数据迁移方法(4页珍藏版)>请在人人文库网上搜索. 1.详细讲解 Or ...

  3. mysql数据迁移 脚本_PHP将数据从Oracle向Mysql数据迁移实例

    为什么要迁移? 首先从运营成本考虑,用Mysql可以节约不少的费用.另一方面,Mysql的稳定性及功能不断地提高与增强,基本上可以满足客户的需求,如支持多 节点部署,数据分区等.还有就是Mysql使用 ...

  4. mysql goldengate_oracle GoldenGate实现Oracle到MySQL数据平滑迁移

    (一)OGG逻辑架构 参照上图简单给大家介绍下OGG逻辑架构,让大家对OGG数据同步过程有个简单了解,后面章节会详细演示相关进程的配置方式,在OGG使用过程中主要涉及以下进程及文件:Manager进程 ...

  5. ORACLE使用copy方式存储迁移,详细讲解Oracle数据库的数据迁移方法

    添加所需的表空间和用户到目标数据库中:安装所需的SQL*Net2或者Net8软件,并配置用于连接数据库的别名. 在DOS命令提示符下设置oracle_sid=Oracle7_sid. 以Interna ...

  6. Oracle数据库迁移测试数据,Oracle数据库的数据迁移方法

    Oracle数据库的数据迁移方法 发表于:2008-04-14来源:作者:点击数: 随着数据库管理系统和操作系统平台的更新换代的速度的加快,数据库管理员经常需要在两个不同的数据库之间或在两种不同的系统 ...

  7. Oracle 10g DG 数据文件迁移

    背景:某客户Oracle 10g 的DG由于空间不足,之前将部分数据文件迁移到其他目录,如今原目录扩容成功,要将之前迁移的数据文件再次迁移回来. 环境:Oracle 10.2.0.5 DG 单机 首先 ...

  8. 达梦数据库迁移oracle数据乱码,oracle迁移到达梦数据库之存储过程中char类型的不同处理...

    oracle迁移到dm之存储过程中char类型的不同处理 1.问题描述: oracle迁移到dm后,oracle正常使用的存储过程,在dm中使用报错:字符串截断 2.查找原因: 2.1 对比oracl ...

  9. 使用OGG/Kettle实现Oracle到MySQL数据平滑迁移

    本文目录: 一.OGG概述 (一)OGG逻辑架构 二.迁移方案 (一)环境信息 (二)表结构迁移 (三)数据迁移 1.源端OGG配置 (1)Oracle数据库配置 (2)Oracle数据库OGG用户创 ...

最新文章

  1. CDN中,字体文件的跨域问题和解决
  2. BZOJ 4070 [Apio2015]雅加达的摩天楼 ——分块 SPFA
  3. redis RDB持久化中save和bgsave区别
  4. 使用临界段实现优化的进程间同步对象-原理和实现
  5. Argon-轻盈简洁好看的WordPress主题
  6. 位带操作全解释,个人觉得不错就转过来理解下
  7. 人家android博客地址
  8. Java解决找不到主类或者无法加载主类
  9. 【effective c++】资源管理
  10. 拿空间换时间的字典-Python基础前传(9)
  11. python解压并另存 .bz2文件的方法
  12. android+自定义跑马灯,android自定义View实现跑马灯效果
  13. HIVE一些字符处理
  14. java comp_Java EE异常:名称java:comp未在此上下文中绑定
  15. 玩转Elasticsearch routing功能
  16. 面试和谈薪技巧及如何避开常见的陷阱
  17. c语言机票座位预定系统_课内资源 - 基于C语言的飞机票预订系统
  18. python商品销售情况数据分析_用python分析小红书销售情况
  19. COLA异步任务重复执行?
  20. 【低功耗蓝牙】② 蓝牙状态切换和事件处理

热门文章

  1. python程序员自我评价_写给程序员的简明 Python(1)
  2. string修饰的梦修改吗_知识点!!!NSString用copy和strong修饰的区别
  3. java缩写_Java学习-Java缩写词的意思
  4. 中国重汽微服务管理_springcloud微服务架构实战:商家管理微服务设计
  5. linux磁盘资源,liunxCPU和内存,磁盘等资源,
  6. python format格式化输出填充符号不起作用_Python格式化输出——format用法示例
  7. 摆胯教学分解_聚十年求索,筑理想课堂——厦门市梧侣学校十周年庆区级教学小学数学(数与形)...
  8. iphone储存空间系统怎么清理_教你快速清理 iPhone 系统缓存垃圾,拒绝卡顿!
  9. ffmpeg编译android,FFMPEG Android(2) 编译编译静态ffmpeg可执行文件
  10. cron 每10分钟执行一次_早餐儿子最爱它,简单卷一卷,10分钟做一大盘,三天两头吃一次...