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的数据在一个库/表,或所有?月 ...
随机推荐
- 分布式版本控制git常见问题之gitignore冲突(精简版)
上次写的的太模糊了,现在简单直接写出个人心得,如下: 原因是有人提交了.gitignore里面的内容,所以和本地的不一样,这样就有问题,那么pull都不可以,所以要这样: git update-ind ...
- Win10 + Python + GPU版MXNet + VS2015 + RTools + R配置
最近入手一台GTX 1070的笔记本,手痒想在win10上试下GPU跑模型,所以就有了接下来的安装GPU版mxnet的坎坷历程,经过多重试验终于搞定了python和R安装mxnet,现将主要点记录如下 ...
- Venn Diagram Comparison of Boruta, FSelectorRcpp and GLMnet Algorithms
Feature selection is a process of extracting valuable features that have significant influence ondep ...
- R语言与分类算法的绩效评估(转)
关于分类算法我们之前也讨论过了KNN.决策树.naivebayes.SVM.ANN.logistic回归.关于这么多的分类算法,我们自然需要考虑谁的表现更加的优秀. 既然要对分类算法进行评价,那么我们 ...
- 细说Linux权限
目录: 归属权与访问权 chmod:访问权限设置 chown:所属权限设置 umask:权限掩码 隐藏属性 chattr:写保护.误删保护 单独限权 setfacl 一.归属和访问权限简介 1.归属( ...
- python之 centos6.7下 python 3.5.2、Django-1.9 安装
在linux6.5中已经自带了python 2 .python 2.6 ,并且yum程序使用的就是自带的python,所以系统自带的python不要随意卸载否则可能导致yum用不了. 测试环境:cen ...
- msseces.exe频繁出错的原因和解决方法?
关机时会报错,什么内存为只读.. 以下是官方给的解决方案,相信对大部分用户都起作用,在这分享给大家. 对于当前遇到的问题,有可能是由于程序冲突导致.因此建议进入干净启动状态再确认问题是否发生: 1.如 ...
- Python os.walk的用法与举例
os.walk(top, topdown=True, onerror=None, followlinks=False) 可以得到一个三元tupple(dirpath, dirnames, filena ...
- 邪恶改装:TPYBoard制作廉价WIFI干扰器
转载请注明:@小五义http://www.cnblogs.com/xiaowuyi 0X01 引言 想不想搞个WIFI干扰器?网上搜集了一下资料,发现用esp8266可以实现简单的干扰功能,包括断网. ...
- C#简单构架之EF进行读写分离+多数据库(Mysql/SqlService)
最近因为项目需要,研究了下EF的读写分离,所以做了一个demo进行测试,下面是项目的结构 表现层view 主要提供Web.WebApi等表现层的解决方案 公共层public 主要提供项目公共类库,数据 ...