在大量資料遷移期間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 , --主鍵ID
ClaimId 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_ID1
INCREMENT BY 1 --每次+1
START WITH 1 --從1開始
NOMAXVALUE --不設定最大值
NOCYCLE
NOCACHE;
--建立觸發器
CREATE OR REPLACE TRIGGER TRI_T_CLAIM_NEW_ID1
BEFORE INSERT
ON T_CLAIM_NEW
FOR EACH ROW
begin
select 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_bj
select CLAIM_STATUS into claim_status_bj from ma_01 where claim_id = claim.claim_id;
--查詢出claim_id相等的案件狀態並賦值給變數CONFIRM_SEQUENCE
select CONFIRM_SEQUENCE_NO into CONFIRM_SEQUENCE from ma_02 where claim_id=claim.claim_id;
--拼接去重後軌跡表ma_01中的案件狀態並根據claim_id賦值給變數claim_status_pj
select 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_ck
select 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學習筆記 0主鍵(自增) 1使用者程式碼 2區域程式碼 3承保公司程式碼 4理賠編碼 5投保確認碼 6案件狀態 7案件進展 8重開案件進展 9轉換後案件狀態 需求分析: 1、根
《Oracle大資料解決方案》學習筆記5——Oracle大資料機的配置、部署架構和監控-1(BDA Config, Deployment Arch, and Monitoring)
這章的內容很多,有的學了。 1. Oracle大資料機——靈活和可擴充套件的架構 2. Hadoop叢集的基本配置 3. Oracle大資料機的硬體配置 4. Oracle大資料機X3-2滿
《Oracle大資料解決方案》學習筆記4——選擇Appliance的理由(Why an Appliance?)
雖然這章的內容有點像Oracled的市場宣傳資料,但也因此學習了一些大資料相關硬體的知識。 1. Oracle大資料機(Big Data Appliance)X3-2硬體規格(全機架配置,18個節點) 2. Oracle大資料機全機架配置環境規格 3. Orac
三、Oracle學習筆記:DDL資料定義語句
一、DDL語言的學習 1.create關鍵字的,用來建表結構。 (1)語句格式: create table tname( colname datatype, colName dataType, ***** colName data
Oracle學習筆記 隨機選擇若干資料
參考:Select *From (Select Pkid, Knowtype, Worktype, Authority, Score, Question, Answer, Deptcode, Inputperson, Inputdate, Choosetype From
四、Oracle學習筆記:DML資料操作語句
二、DML語句學習 1.insert: 向表中插入資料 --格式: insert into tname(colName,colName....) values(value1,value2,....); or insert into tname value
Oracle學習筆記—Db_name、Db_domain、Global_name、Service_name、Instance_name和Oracle_SID(轉載)
安全 文件中 分布 好處 避免 名稱 detail 數據庫安全 自動 轉載自: Oracle中DB_NAME,SID,DB_DOMAIN,SERVICE_NAME等之間的區別 Db_name:對一個數據庫(Oracle database)的唯一標識。這種表示對於單個數據
Oracle學習筆記—歸檔模式
enable 11.2 bit dmi copyright 災難 筆記 關閉數據庫 tle 什麽是歸檔模式 Oracle數據庫有聯機重做日誌,這個日誌是記錄對數據庫所做的修改,比如插入,刪除,更新數據等,對這些操作都會記錄在聯機重做日誌裏。一般數據庫至少要有2個聯機重做日誌
Oracle學習筆記—oracle體系架構及狀態(nomount、mount和open)簡介
位置 正常 處理 管理 共享服務器 體系 操作記錄 sysdba png oracle體系架構簡介 先來簡要了解一下Oracle數據庫體系架構以便於後面深入理解,Oracle Server主要由實例(instance)和數據庫(database)組成。實例(instance
oracle學習筆記(4)
linux系統 sta sys 配置 默認 搜索 密碼 多用戶 登錄 4.oracle數據庫的啟動流程 windows操作系統 啟動監聽: lsnrctl start; 啟動數據庫實例:oradim-startup-sid 實例名 linux系統
【Oracle學習筆記】
關閉 用例 ons 調用方法 procedure exc tex del 存儲過程 內容主要包括:(1)三種循環及其簡化(2)遊標的使用(3)異常處理(4)存儲過程(5)存儲函數(6)觸發器(7)其它pl/sql操作---------------loop循環定義變量--
(一)Oracle學習筆記—— 表和表空間
最大 更改 默認 oracle spa mil 步驟 font lte 1. 表空間 一個數據庫可以有多個表空間,一個表空間裏可以有多個表。表空間就是存多個表的物理空間;可以指定表空間的大小位置等。 1.1 創建表空間語句 create tablespace t
(三)Oracle學習筆記—— sql語句
dna 聯合 com .com 外連接 color 分組查詢 cot 語句 0. scott 用戶默認表介紹 scott用戶Tables目錄下包含四張表 1. insert(插入)語句 給指定列插入數據: insert into de
(四)Oracle學習筆記—— 常見函數
出現 3.4 date 常用 字符串類型 添加 轉換 sign 首字符 1. 字符串類型及函數 字符類型分 3 種,char(n) 、varchar(n)、varchar2(n) ; char(n)固定長度字符串,假如長度不足 n,右邊空格補齊; varchar(
oracle學習筆記 持續更新
.net 情況 style 空間 resource sdn detail reat net 1、創建表空間DATA_BASIC (1)Orale用戶登錄系統 (2)sqlplus / as sysdba; DBA用戶登錄數據庫; 執行:create tablespace T
Oracle 學習筆記(一)
tween 就會 重復 lte 分支 oracle comment 樹結構 ping 一、字符串函數 lower(字符串) 小寫 upper(字符串) 大寫 initcap(字符串) 首字母大寫 concat(列1,列2) 兩列合並 length(字符串
(七)Oracle學習筆記—— 遊標
使用 3.3 job clerk 介紹 tput 技術分享 then emp 1.遊標簡介 遊標用來處理從數據庫中檢索的多行記錄(使用SELECT語句)。利用遊標,程序可以逐個地處理和遍歷一次檢索返回的整個記錄集。 為了處理SQL語句,Oracle將在內存中分配
oracle學習筆記比較運算
比較 運算 < >= <= >= <>(不等於) !=(不等於) :=(賦值)between……and (在一個區間 包含邊界)--查詢工資在2000到5000的工資 select salary from employees where salary
oracle學習筆記單行函數
oracle 單行函數的用法詳解單行函數只對一行進行變換 每行返回一個結果單行函數分 字符、數值、日期、轉換、通用字符函數:大小寫控制函數、字符控制函數 大小寫控制函數:lower, upper, initcap 字符控制函數:concat,substr,length,i
Oracle 學習筆記(五)
采樣 flash 全表掃描 group space 表空間 manage 授權 個數 --表空間,auto: 自動管理, manual: 手動管理 create tablespace tsp1 datafile ‘D:\ORACLE\ORADATA\O10\tsp1.