在大量数据迁移期间oracle学习笔记
在数据迁移期间oracle学习笔记
0主键(自增) 1用户代码 2区域代码 3承保公司代码 4理赔编码 5投保确认码 6案件状态 7案件进展 8重开案件进展 9转换后案件状态
需求分析:
1、根据上述要求创建需要的表
2、将几个表中的相应数据对应插入到新创建的表中
3、因为claim_id是固定的,可以根据claim_id进行循环插入几个表中的数据
4、在7、8项中涉及到案件状态的去重和拼接
5、案件状态的转换
--创建表T_CLAIM_NEW
create table T_CLAIM_NEW(ID NUMBER, --主键IDClaimId number(10),UserCode varchar2(30), --用户名称AreaCode varchar2(10), --地区代码CompanyCode varchar2(8), --公司代码ClaimQueryNo varchar2(50), --理赔编码PolicyConfirmNo varchar2(50), --投保确认码CLAIM_STATUS varchar2(2), --案件状态G_CLAIM_STATUS varchar2(30), --案件进展REOPEN_CLAIM_STATUS varchar2(30), --重开后的案件进展IA_CLAIM_STATUS varchar2(30), --转换后的案件状态CONSTRAINT PK_ID PRIMARY KEY (ID)
);--自增序列
CREATE SEQUENCE T_CLAIM_NEW_ID1INCREMENT BY 1 --每次+1START WITH 1 --从1开始NOMAXVALUE --不设置最大值NOCYCLE NOCACHE;--创建触发器
CREATE OR REPLACE TRIGGER TRI_T_CLAIM_NEW_ID1BEFORE INSERT ON T_CLAIM_NEWFOR EACH ROW beginselect T_CLAIM_NEW_ID1.nextval INTO :NEW.ID from dual;
end;
/************************************************************************************************************************************************--去重:
--创建临时表
create table ma_20180709 as (select * from T_CLAIM_LIST_RECORD);
--删除重复数据并保留最大时间(因为最后一次更新时间也是id越大时间越大)
delete from ma_20180709 where RECORD_ID not in (select max(RECORD_ID) from ma_20180709 group by claim_id,claim_code);
************************************************************************************************************************************************
--查询表ma_20180709中相应数据并拼接claim_status字段
--insert into tablename
select listagg(claim_status,',') within group(order by CLAIM_STATUS) from ma_20180709 group by claim_id,claim_code; ************************************************************************************************************************************************
--对轨迹表进行去重等操作
--创建ma_01临时表
create table ma_01 as (select * from T_CLAIM_LIST_RECORD);
--去重
delete from ma_01 where RECORD_ID not in (select max(RECORD_ID) from ma_01 group by claim_id,claim_code);--对重开轨迹表进行去重等操作
--创建ma_03临时表
create table ma_03 as (select * from T_CLAIM_LIST_RECORD_REOPEN);
--去重
delete from ma_03 where RECORD_ID not in (select max(RECORD_ID) from ma_03 group by claim_id,claim_code);--创建主表T_CLAIM_LIST的临时表ma_02
create table ma_02 as (select * from T_CLAIM_LIST);
************************************************************************************************************************************************--函数入口
declare--声明投保确认码
CONFIRM_SEQUENCE varchar(50);
--声明案件状态
claim_status_bj varchar2(30);
--声明案件进展(拼接后案件状态)
claim_status_pj varchar2(30);
--声明重开后案件状态
claim_status_ck varchar2(30);
--声明游标
cursor TAGENTMENUd is select * from t_claim_list_record where 1=1;begin
for claim in TAGENTMENUd LOOP--查询出claim_id相等的案件状态并赋值给变量claim_status_bjselect CLAIM_STATUS into claim_status_bj from ma_01 where claim_id = claim.claim_id;--查询出claim_id相等的案件状态并赋值给变量CONFIRM_SEQUENCEselect CONFIRM_SEQUENCE_NO into CONFIRM_SEQUENCE from ma_02 where claim_id=claim.claim_id;--拼接去重后轨迹表ma_01中的案件状态并根据claim_id赋值给变量claim_status_pjselect listagg(claim_status,',') within group(order by CLAIM_STATUS) into claim_status_pj from ma_01 where claim_id=claim.claim_id;--拼接去重后重开轨迹表ma_03中的案件状态,并根据claim_id赋值给变量claim_starus_ckselect listagg(claim_status,',') within group(order by CLAIM_STATUS) into claim_starus_ck from ma_03 where claim_id=claim.claim_id;--将拼接后的案件状态进行对应转换--插入操作 insert into T_CLAIM_NEW(ClaimId,AreaCode,ClaimQueryNo,POLICYCONFIRMNO,CLAIM_STATUS,G_CLAIM_STATUS,REOPEN_CLAIM_STATUS) values(claim.claim_id,'110000',claim.claim_code,CONFIRM_SEQUENCE,claim_status_bj,claim_status_pj,claim_starus_ck);END LOOP;
end;
/
************************************************************************************************************************************************
注意点:
1、在函数创建过程中遇到变量问题,想要给查询出来的东西赋值,赋值语法为:'select 字段名(公式) into 变量名 from tablename where 条件语句'2、函数中的循环 如上述所示
for '变量' in '范围/结果集' loop
在大量数据迁移期间oracle学习笔记相关推荐
- oracle update单引号,Oracle学习笔记:update的字段中包括单引号
平时update的时候直接更改字段内的值,例如: update table_temp set name = 'Hider' where id = 100; 但更新后的值中包括单引号,则不能按以上方式进 ...
- oracle学习笔记 参数文件及数据库的启动和关闭
oracle学习笔记 参数文件及数据库的启动和关闭 我们这节课把oracle的参数文件以及oracle的启动关闭讲一下 一)参数文件作用 先看oracle的参数文件 它由来已久了 我们知道oracle ...
- oracle:oracle学习笔记(四)循环、光标、异常、瀑布模型
oracle学习笔记:循环.光标.异常 文章目录 打印Hello World 定义基本变量 引用型变量(单行)` my_name emp.ename%type ` 记录型变量(多行) `emp_rec ...
- Oracle学习笔记---(一)
Oracle学习笔记---(一) 一 1.Oracle简介 Oracle是以高级结构化查询语言(SQL)为基础的大型关系数据库:是一个对象关系数据库管理系统(ORDBMS).它提供了关系数据库 ...
- oracle 权限问题9017,[数据库]oracle学习笔记(一)用户管理_星空网
oracle学习笔记(一)用户管理 2014-04-13 0 1 --oracle学习第一天 2 --连接 @后面连接数据库实例,具体连接到那个数据库 3 conn scott/tiger@MYORA ...
- oracle学习笔记 Oracle体系结构概述
oracle学习笔记 Oracle体系结构概述 从这节开始,开始讲oracle数据库体系结构. 首先从总体上,从概述上把oracle整体的体系结构讲一下, 然后接下来的时间我们会一块一块的将oracl ...
- Oracle学习笔记 字符集概述
Oracle 学习笔记 字符集概述 这节课开始讲oracle里面的字符集 偏重于原理和简单的一些判断以及实现 字符集它涉及到很多的东西 比如建库和操作系统环境 这节课把字符集的原理性的东西以及常见的操 ...
- oracle学习笔记 oracle软件安装准备工作 第一部分 环境准备
oracle学习笔记 oracle软件安装准备工作 第一部分 环境准备 这节课对初学者来说内容较多,我把它分成了三篇. 即使这样也不可能把每个可能遇到的问题都说到,如果遇到没说到的问题自己上网搜 ...
- Oracle学习笔记(七)——分组统计查询
Oracle学习笔记(七)--分组统计查询 基础统计函数的使用 分组统计操作的实现,结合多表查询使用分组统计 常用统计函数 COUNT(*|[DISTINCT]字段) MAX(字段,日期或数字) MI ...
最新文章
- linux线程10s没有得到调度,操作系统相关题目(附上答案)
- vs2008/2010安装无法打开数据文件解决方案
- vue-cli Invalid Host header
- 打通NTFS权限 文件共享各取所需
- debugging Auto Layout:Logical Errors
- 判断星座PHP,php根据日期判断星座的函数分享_PHP教程
- Linux下高效编写Shell——shell特殊字符汇总
- 【java学习之路】(java SE篇)014.Stream API
- kong 自建一个具有健康检查功能的http/tcp负载均衡器,配置流量权重,自动/手动目标健康,流量统一认证、鉴权、限流限速、修正,监控、日志等功能
- 防盗链及图片加密系统
- 《疯狂的站长》读后感1
- 微信怎么不支持华为鸿蒙,微信迟迟不加入鸿蒙,华为为何不着急呢?
- 表白密码:I Love you的42种密码表白方式
- 一问解决设备管理器里面提示:未知usb设备(设备描述符请求失败) 或者是“Unknown USB Device(Device Descriptor Request Sailed)”错误
- 利用Landsat8数据的不同波段组合监测冰雪分布情况
- 用标志域tag判断队空队满的入队和出队算法
- 如何使用 JavaScript 显示/隐藏或切换 DIV 元素
- 数据中心与云数据中心
- 抖音死亡计算机背景音乐,抖音死亡计算器app
- HUAWEI内网最新发布了一份452页网络协议手册,GitHb百万收藏
热门文章
- 130242014049+魏俊斌+第2次试验
- RocketMQ原理解析-Consumer
- 25_android下文件访问的权限
- nagios IO监控 Error executing iostat command
- iOS优化内存,提升性能 之五
- ADO.NET实例教学一
- 6 important .NET concepts: - Stack, heap, Value types, reference types, boxing and Unboxing.
- Python中多线程thread与threading的实现方法
- python sorted list 包含元组 字典 的多列排序
- 【操作系统】输入输出系统(中)-思维导图