Rownum序列的自增长的组合用法技巧

根据序列自增长的步长规律,结合表行记录Rownum值的规则批量生成表的行记录主键的用法技巧

案例如下:

CREATE OR REPLACE PROCEDURE BILL_TRANSFER
   AUTHID CURRENT_USER
IS
   create_sql   );
   update_sql   );
   insert_sql   );
   V_info_id    NUMBER;
   info_count   NUMBER;
BEGIN

   --1、充分利用序列的自增长和Rownum的用法生成新数据的主键ID(原系统数据主键与新数据主键对应关系)
   --获取主键序列最大值
   SELECT seq_bill_info.nextval INTO V_info_id FROM dual;

   --创建新主键与原主键的映射关系表
   create_sql :=
         'create table bill_info_map as select bill_id,ROWNUM +'
      || V_info_id
      || ' as  bill_id_new from bill_info@jn order by bill_id';

   EXECUTE IMMEDIATE create_sql;

   --2、新数据主键序列值占用更新(根据Oracle序列自增长步长规则更新其占用)
   --本次迁移的数据总量
   SELECT COUNT (bi.bill_id)
     INTO info_count
     FROM bill_info@jn bi;

   --更新序列值
   update_sql := 'alter sequence seq_bill_info increment BY ' || info_count;

   EXECUTE IMMEDIATE update_sql;

   SELECT seq_bill_info.NEXTVAL INTO V_info_id FROM DUAL;

   update_sql := 'alter sequence seq_bill_info increment BY 1';

   EXECUTE IMMEDIATE update_sql;

   --3、创建截止迁移之时起票据基本信息的备份表
   create_sql :=
         'create table bill_info_copy as select m.bill_id_new bill_id,bi.bill_code,bi.bill_status,bi.bill_type,bi.is_valid,bi.receive_name,oi.org_id_new org_id,'
      || '''数据迁移'''
      || ' AS str_remark'
      || ' from bill_info@jn bi'
      || ' join bill_info_map m on m.bill_id=bi.bill_id'
      || ' left join (select org_id, org_id org_id_new from org_info@jn where org_type ='
      '''
      || ' and org_id <> 60 UNION select 60 org_id, org_id org_id_new from org_info where org_id = 61) oi'
      || ' on bi.org_id = oi.org_id';

   EXECUTE IMMEDIATE create_sql;

   --4、导入交款汇总数据
   insert_sql := 'insert into bill_info  select * from bill_info_copy';

   EXECUTE IMMEDIATE insert_sql;

   COMMIT;

END BILL_TRANSFER;

以上案例分析,

第一步:取出目前序列的最大值或者当前使用的值;
第二步:根据Rownum从1开始,自增长的规律,结合当前序列的最大值批量生成新的主键ID;

第三步:主键已经占用的值需要同步将序列的值同步更新,根据序列的步长修改规则修改其步长以免之后新生成的主键与现有的数据主键冲突。

Oracle数据迁移笔记-Rownum与序列的自增长的组合用法技巧的更多相关文章

  1. MS SQL到Oracle的数据迁移笔记

    MS SQL到Oracle的数据迁移笔记 一.任务背景 旧系统使用MS SQL Server数据库,新系统使用Oracle数据库,现在需要将旧系统中的数据迁移到新系统中,旧数据按照约定的规则转换后,能 ...

  2. Oracle数据迁移至HBase操作记录

    Oracle数据迁移至HBase操作记录 @(HBase) 近期需要把Oracle数据库中的十几张表T级别的数据迁移至HBase中,过程中遇到了许多苦难和疑惑,在此记录一下希望能帮到一些有同样需求的兄 ...

  3. Oracle数据迁移expdp/impdp

    Oracle数据迁移expdp/impdp目的:指导项目侧自行进行简单的数据泵迁移工作. 本文实验环境:Oracle 11.2.0.4,利用数据库自带的scott示例用户进行试验测试. 1.首先需要创 ...

  4. Oracle数据迁移-系统数据合并笔记

    创建临时表:execute immediate 'sql'; 通过临时表和关联查询解决循环处理效率低下,大数据操作移植时时间太长的问题. 结构相同的系统数据库表移植,案例如下: create or r ...

  5. Oracle数据迁移至MySQL

    ORACLE DB: 11.2.0.3.0 MYSQL DB: 5.5.14 因项目需求,需要将ORACLE生产中数据迁移至MYSQL数据库中作为初始数据,方法有如下几种: 1.ORACLE OGG ...

  6. oracle数据迁移之Exp和Expdp导出数据的性能对比与优化

    https://wangbinbin0326.github.io/2017/03/31/oracle%E6%95%B0%E6%8D%AE%E8%BF%81%E7%A7%BB%E4%B9%8BExp%E ...

  7. Oracle数据迁移后由列的直方图统计信息引起的执行计划异常

    (一)问题背景 在使用impdp进行数据导入的时候,往往在导入表和索引的统计信息的时候,速度非常慢,因此我在使用impdp进行导入时,会使用exclude=table_statistics排除表的统计 ...

  8. 【Oracle 数据迁移】环境oracle 11gR2,exp无法导出空表的表结构【转载】

    今天做数据迁移,但是发现有些空表无法exp,后来找到问题所在. [原文]:http://www.cnblogs.com/wenlong/p/3684230.html 11GR2中有个新特性,当表无数据 ...

  9. oracle数据迁移

    通过这个文章演示一下Oracle的表空间迁移流程以及需要注意的诸多事项. 实验目标:将ora10g数据库实例上的表空间TBS_SEC_D迁移到secooler数据库实例上操作系统:Redhat 5.3 ...

随机推荐

  1. "php-cgi.exe - FastCGI 进程意外退出" 解决办法

    问题描述: win7下iis中php-cgi.exe - FastCGI 进程意外退出 错误提示: HTTP 错误 500.0 - Internal Server Error D:\phpStudy\ ...

  2. laravel 服务容器实现原理

    前言 通过实现laravel 框架功能,以便深入理解laravel框架的先进思想. 什么是服务容器 服务容器是用来管理类依赖与运行依赖注入的工具.Laravel框架中就是使用服务容器来实现 ** 控制 ...

  3. [Lucene]-Lucene基本概述以及简单实例

    一.Lucene基本介绍: 基本信息:Lucene 是 Apache 软件基金会的一个开放源代码的全文检索引擎工具包,是一个全文检索引擎的架构,提供了完整的查询引擎和索引引擎,部分文本分析引擎.Luc ...

  4. robot framework环境搭建

    来源:http://www.cnblogs.com/puresoul/p/3854963.html[转] 一. robot framework环境搭建: 官网:http://robotframewor ...

  5. 关于angular-route后获取路由标签的一些问题

    要实现angular路由,我们需要用到angular.js和angular-route.js 在接入网络的情况下,很多网站都可以下载到这个文件. 然后呢,将文件引入到你的HTML中,然后是基础格式 h ...

  6. 【论文:麦克风阵列增强】Microphone Array Post-Filtering For Non-Stationary Noise Suppression

    作者:桂. 时间:2017-06-08  08:01:41 链接:http://www.cnblogs.com/xingshansi/p/6957027.html 原文链接:http://pan.ba ...

  7. if中可以使用那些作为判断条件呢?

    在所有编程语言中if是最长用的判断之一,但在js中到底哪些东西可以在if中式作为判断表达式呢? 例如如何几行,只是少了一个括号,真假就完全不同,到底表示什么含义呢 ? 1 2 3 4 5 6 7 8 ...

  8. windows利用iis配置反向代理实现ECS内网互通oss

    IIS实现反向代理 新建两个站点,端口分别使用 80 和 81,在DNS中新建A记录,指向该计算机(10.4.34.41) 配置过程如下: 1.在Windows Server 2012 R2上 安装A ...

  9. 允许mysql用户从远程登录

    1.修改/etc/mysql/my.cnf,将下面的行注释掉bind=127.0.0.1注释#bind=127.0.0.1 2.修改用户权限,允许从任何主机登录mysql>use mysql;m ...

  10. WPF MVVM 架构 Step By Step(6)(把actions从view model解耦)

    到现在为止,我们创建了一个简单的MVVM的例子,包含了实现了的属性和命令.我们现在有这样一个包含了例如textbox类似的输入元素的视图,textbox用绑定来和view model联系,像点击but ...