Oracle数据迁移笔记-Rownum与序列的自增长的组合用法技巧
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与序列的自增长的组合用法技巧的更多相关文章
- MS SQL到Oracle的数据迁移笔记
MS SQL到Oracle的数据迁移笔记 一.任务背景 旧系统使用MS SQL Server数据库,新系统使用Oracle数据库,现在需要将旧系统中的数据迁移到新系统中,旧数据按照约定的规则转换后,能 ...
- Oracle数据迁移至HBase操作记录
Oracle数据迁移至HBase操作记录 @(HBase) 近期需要把Oracle数据库中的十几张表T级别的数据迁移至HBase中,过程中遇到了许多苦难和疑惑,在此记录一下希望能帮到一些有同样需求的兄 ...
- Oracle数据迁移expdp/impdp
Oracle数据迁移expdp/impdp目的:指导项目侧自行进行简单的数据泵迁移工作. 本文实验环境:Oracle 11.2.0.4,利用数据库自带的scott示例用户进行试验测试. 1.首先需要创 ...
- Oracle数据迁移-系统数据合并笔记
创建临时表:execute immediate 'sql'; 通过临时表和关联查询解决循环处理效率低下,大数据操作移植时时间太长的问题. 结构相同的系统数据库表移植,案例如下: create or r ...
- Oracle数据迁移至MySQL
ORACLE DB: 11.2.0.3.0 MYSQL DB: 5.5.14 因项目需求,需要将ORACLE生产中数据迁移至MYSQL数据库中作为初始数据,方法有如下几种: 1.ORACLE OGG ...
- 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 ...
- Oracle数据迁移后由列的直方图统计信息引起的执行计划异常
(一)问题背景 在使用impdp进行数据导入的时候,往往在导入表和索引的统计信息的时候,速度非常慢,因此我在使用impdp进行导入时,会使用exclude=table_statistics排除表的统计 ...
- 【Oracle 数据迁移】环境oracle 11gR2,exp无法导出空表的表结构【转载】
今天做数据迁移,但是发现有些空表无法exp,后来找到问题所在. [原文]:http://www.cnblogs.com/wenlong/p/3684230.html 11GR2中有个新特性,当表无数据 ...
- oracle数据迁移
通过这个文章演示一下Oracle的表空间迁移流程以及需要注意的诸多事项. 实验目标:将ora10g数据库实例上的表空间TBS_SEC_D迁移到secooler数据库实例上操作系统:Redhat 5.3 ...
随机推荐
- PHP基础入门(二)---入门必备哦!
前言 在上一章中,我们初步了解了PHP的网页基础和PHP的入门基础,今天继续给大家分享更多有关PHP的知识. 理论知识看起来可能比较枯燥一些,但是我们的实践(敲代码)毕竟离不开它. 只有理论与实践相结 ...
- [机器学习实践] 针对Breast-Cancer数据集
本篇博客中,我们将对一个UCI数据库中的数据集:Breast-Cancer数据集,应用已有的机器学习方法来实现一个分类器. 本文代码链接 数据集概况 数据集的地址为:link 在该页面中,可以进入Da ...
- poj2069
poj2069 题意 求一个覆盖所有点的最小球体的半径.即求空间内一点到所有点的距离的最大值最小的点. 分析 模拟退火算法,但这道题竟然不用随机函数就能过了,主要体现了算法的渐近收敛性, 起始点随意取 ...
- 乐视开放平台技术架构-servlet和spring mvc篇
在乐视风口浪尖的时候,敢于站出来说我是乐视的而不怕被打脸的,也就是我了.就算我以后不在乐视了,提起来在乐视工作过,我也还是挺骄傲的.因为这是一个有理想,敢拼敢干的公司.想起复仇者联盟里Fury指挥官的 ...
- nodejs - 守护进程 supervisor
1. 安装 npm -g install supervisor 2. 如果使用了expres框架 需要修改启动方式 到 package.json中的 "scripts&quo ...
- [IR] String Matching
BWT KMP Boyer-Moore BWT [IR] BWT+MTF+AC 中已经介绍了BWT (Burrows–Wheeler_transform)数据转换算法, 这种变换方式不仅方便压缩,同时 ...
- JavaScript实现图片拖拽、粘贴上传
前些日子为老婆做了一个web管理商品的工具,因为商品的图片比较多并且还需要剪裁图,为了上传图片方便加了一个拖拽.粘贴上传的功能. 我已经把代码整理出来放到GitHub上了,有兴趣的朋友可以下来玩玩. ...
- git与github的使用
git和github是两个完全不同的概念,就好比如雷锋与雷峰塔的关系. git是一个版本管理工具,用来更好的管理你的程序,比如你原来提交过的内容,以后虽然修改了,但是通过git这个工具, 可以把你原来 ...
- Bash的条件表达式求值
Bash的条件控制允许两种类型:1)命令的成功或失败 2)逻辑表达式的真假这两种类型都可以通过退出状态($?)来检验,$?=0为真,否则为假 一.命令的成功或失败 通过查看$?值$echo $? 二. ...
- Python Trick
一. 查询函数参数 import inspect print(inspect.getargspec(func)) 二. 查询对象属性 使用 dir() 查询对象属性 使用内置函数 hasattr(ob ...