Oracle数据迁移-系统数据合并笔记
创建临时表:execute immediate 'sql';
通过临时表和关联查询解决循环处理效率低下,大数据操作移植时时间太长的问题。
结构相同的系统数据库表移植,案例如下:
create or replace procedure jk_trade_transfer authid current_user IS
create_sql );
update_sql );
insert_sql );
V_info_id NUMBER;
info_count NUMBER;
begin
--一、迁移trade表
--创建截止迁移之时起的交款交易的备份表
create_sql:''';
execute immediate create_sql ;
--2、创建获取交款申请编号重复的交款交易数据表
create_sql:''';
execute immediate create_sql ;
--3、生成新的申请编号并创建映射原申请编号的对应关系表
--获取迁移数据的需要重新生成申请编号的数量
) ');
--获取序列最大值
), ), ')INTO V_info_id from keytable where key_name = 'batchno';
--创建主键映射表
create_sql:='create table jk_trade_map as select batch_no ,ROWNUM +' ||V_info_id ||' as batch_no_new from jk_trade_1 order by batch_no';
execute immediate create_sql ;
--更新序列值
update_sql:='update keytable set value = value +'|| info_count ||'where key_name='||'''batchno''';
execute immediate update_sql ;
--将不需要重新生成申请编号的数据插入映射表
insert_sql:='insert into jk_trade_map select batch_no,batch_no batch_no_new from jk_trade jt where not exists(select jk.batch_no from jk_trade_1 jk where jk.batch_no=jt.batch_no)';
execute immediate insert_sql ;
--4、创建导入数据表
create_sql:='create table jk_trade_copy as select itm.batch_no_new as batch_no, it.tran_type,it.tran_status, it.reg_operid, it.reg_opername,'||
' it.reg_date, it.reg_time, it.finish_date, it.finish_time, it.tran_amt,it.tran_area, it.tran_count, bi.info_id_new sect_id, it.crt_org_id, it.dist_id,'||
' it.req_notify_no, it.res_notify_no, it.tran_group,it.tran_mode,'||'''数据迁移'''||' otr_remark,it.id,itm.batch_no orgin_batch_no from info_trade it '||
' join jk_trade_map itm on it.batch_no=itm.batch_no left join base_info_map bi on bi.info_id=it.sect_id order by it.batch_no';
execute immediate create_sql ;
--5、导入交款交易数据
insert_sql:='insert into trade select * from jk_trade_copy';
execute immediate insert_sql ;
COMMIT;
---迁移trade表 end
--二、迁移pay_detail表
--1、创建交款清册导入表
create_sql:='create table pay_detail_copy as select t.batch_no_new batch_no,t.fund_new fund,bim.info_id_new info_id,p.info_area,p.dev_should,p.own_should,p.dev_amt,p.own_amt,p.tran_amt,'||'''数据迁移'''||' p.dec_remark from pay_detail p'||
' join jk_trade_map t on p.batch_no=t.batch_no'||
' left join base_info_map bim on bim.info_id=p.info_id'||
' left join acct t on t.fund=p.fund';
execute immediate create_sql ;
--2、导入交款清册数据
insert_sql:='insert into pay_detail select * from pay_detail_copy';
execute immediate insert_sql ;
COMMIT;
--三、迁移pay_sum表
--1、创建获取交款组编号重复的交款交易数据表
create_sql:='create table jk_trade_2 as select distinct t.batch_no,t.tran_mode from trade@jn t where exists (select td.batch_no from pay_sum td where td.batch_no=t.tran_group)';
execute immediate create_sql ;
--2、生成新的申请编号并创建映射原申请编号的对应关系表
--获取迁移数据的需要重新生成申请编号的数量
) INTO info_count from (select distinct t.batch_no,t.tran_mode from trade@jn t where exists (select td.batch_no from pay_sum td where td.batch_no=t.tran_group));
--获取序列最大值
)), ), ')INTO V_info_id from keytable where key_name = 'batchno';
--创建主键映射表
create_sql:='create table pay_sum_map as select batch_no ,ROWNUM +' ||V_info_id ||' as batch_no_new from jk_trade_2 order by batch_no';
execute immediate create_sql ;
--将交易表中涉及tran_group重新生成的更新
update_sql:''';
execute immediate update_sql ;
--更新序列值
update_sql:='update keytable set value = value +'|| info_count ||'where key_name='||'''batchno''';
execute immediate update_sql ;
--将不需要重新生成申请编号的数据插入映射表
insert_sql:='insert into pay_sum_map select batch_no,batch_no batch_no_new from pay_sum jt where not exists(select jk.batch_no from jk_trade_2 jk where jk.batch_no=jt.batch_no)';
execute immediate insert_sql ;
--3、创建交款清册导入表
create_sql:='create table pay_sum_copy as select t.batch_no_new batch_no,p.pay_type,'||'''数据迁移'''||' sum_remark from pay_sum p'||
' join pay_sum_map t on p.batch_no=t.batch_no';
execute immediate create_sql ;
--4、导入交款清册数据
insert_sql:='insert into pay_sum select * from pay_sum_copy';
execute immediate insert_sql ;
end jk_trade_transfer;
Oracle数据迁移-系统数据合并笔记的更多相关文章
- laravel中的数据迁移和数据填充
laravel中的数据迁移和数据填充 标签(空格分隔): php 生成迁移文件两种方式: 1 新建一个表的迁移文件 php artisan make:migration create_students ...
- oracle 数据迁移之数据泵的基本使用
oracle相同数据库下跨schema的表迁移—expdp/impdp 需求:将GUIDO用户下的表迁移到SCOTT用户下 select * from dba_role_privs where GRA ...
- oracle 定期迁移分区表数据(不落地)
[oracle@SJ ~]$ cat /home/oracle/JY_SJ.sh #!/bin/bashsource /home/oracle/.bash_profileSDATE=$(date + ...
- oracle在线迁移同步数据,数据库报错
报需要升级的错误,具体处理步骤如下: 一.错误信息 SQL> alter database open ;alter database open resetlogs*ERROR at line 1 ...
- 阿里云Linux服务器,挂载硬盘并将系统盘数据迁移到数据盘
因为之前用宝塔上线,宝塔只挂载了系统盘50G,打开阿里云云盘列表发现系统盘无法直接升级,故另买一块数据盘挂载到Linux服务器下,下面根据网上教程再结合我实际情况讲解一下实际操作,其实非常easy l ...
- laravel框架总结(十四) -- 数据迁移和数据填充
一.数据迁移 1.创建一个迁移 1>使用artisan命令make:migration来创建一个新的迁移: php artisan make:migration create_sutdents_ ...
- 物化视图(materialized view) 实现数据迁移、数据定时同步
近日公司有一个9i 的Oracle数据库,运行效率低下.想要将其升级到11G. 但是升级之前 要将数据进行同步,好在表不是很多.只有三张表.业务压力也不大,就想到了使用物 化视图的方式将数据同步过来. ...
- laravel模型建立和数据迁移和数据填充(数据填充没有成功)未完
开始创建我们的第一个 Article 模型及其对应迁移文件了,我们在项目根目录运行如下 Artisan 命令一步到位: php artisan make:model Article -m -m 是 - ...
- 一种可以避免数据迁移的分库分表scale-out扩容方式
原文地址:http://jm-blog.aliapp.com/?p=590 目前绝大多数应用采取的两种分库分表规则 mod方式 dayofweek系列日期方式(所有星期1的数据在一个库/表,或所有?月 ...
随机推荐
- NodeJS在线聊天室(NodeJS & SocketIO & Express & EJS & MongoDB & Gulp)
项目背景 这个项目主要是为了玩玩NodeJS,项目的方向大概是做出类似QQ的在线聊天系统.想要在线体验可以点击在线演示. 项目使用PM2进行部署和管理,功能在不断的迭代开发中.如果你觉得这个项目比较有 ...
- backbone中get和fetch的区别
我也是刚开始接触backbone.js对于里面的很多东西都看过,但是具体在使用起来还是有很多问题,其中一个就是get和fetch的区别,这个让我很纠结,都是获取模型的数据,干嘛要有两个呢?最近好像弄明 ...
- 用excel公式生成有规律的代码,减少编程工作量
1.在excel中如何输入公式 在excel表格中输入 & 符号是字符串的连接符,比如: 在excel表格中输入 ="sherlock"&"mina&q ...
- RELabel : 一个极简的正则表达式匹配和展示框架
html,body,div,span,applet,object,iframe,h1,h2,h3,h4,h5,h6,p,blockquote,pre,a,abbr,acronym,address,bi ...
- MATLAB仿真中连续和离散的控制器有何区别?
matlab系统同时提供连续和离散的控制器和对象的目的是:在降低用户使用复杂程度的同时提高仿真精度.仿真速度和应用的广泛性. 仿真步长和求解精度的概念对于理解这个问题至关重要. 首先是步长,步长和求解 ...
- 深入浅出 spring-data-elasticsearch - 基本案例详解(三
『 风云说:能分享自己职位的知识的领导是个好领导. 』运行环境:JDK 7 或 8,Maven 3.0+技术栈:SpringBoot 1.5+, Spring Data Elasticsearch ...
- Go - concurrency
并发 vs 并行 首先,我们先来搞清楚概念以及并发和并行的区别. 并发 - 利用时间片切换来实现“同时”运行的. 并行 - 利用CPU的多核来实现通过多线程来实现同时运行. Go 语言的设计理念就是通 ...
- JAVA项目省市县加载兼容浏览器异常
最近同僚遇到个在IE8及IE8以下浏览器上出现地址加载问题,初始加载没问题,问题出在事件上. 先来一段初始加载地址的代码:(也可以修改或者增加第二个事件地址) var select1 = new Li ...
- CoolBlog开发笔记第1课:项目分析
首先说一下CoolBlog开发笔记是我制作的<Django实战项目>系列教程基础篇的内容,使用Django来开发一个酷炫的个人博客,涉及的知识包括项目的分析,环境的搭建,模型和视图定义等等 ...
- c++课程设计之菜单选择
a) 从键盘输入n个数,选择升序还是降序输出 b)创新了日历 c) 添加了射箭游戏 d)还加入了好玩的24点游戏 学生签名: 年 月 日 课程设计(论文)评阅意见 等 级 项 ...