把非分割槽表改為分割槽表

2021-06-03 12:54:55 字數 2550 閱讀 3376

把非分割槽表改為分割槽表

--說明:把非分割槽表改為分割槽表適用於歷史表

---1、建立分割槽表(結構和非分割槽表tbl_stock_balance_log相同)

createtabletbl_stock_balance_log_part1

(account_id       varchar2(20 byte),

occur_date       date,

branch_id        number(10),

money_type       varchar2(10 byte),

money_type_name  varchar2(20 byte),

market_code      varchar2(10 byte),

market_name      varchar2(30 byte),

stock_code       varchar2(10 byte),

stock_name       varchar2(60 byte),

stock_type_code  varchar2(40 byte),

stock_type_name  varchar2(60 byte),

qty             number(18),

stockvalue       number(18,4),

indust_num       varchar2(20 byte),

close_price      number(18,4),

asset_acct       number(18,4),

refer_cost       number(18,4),

refer_break      number(18,4),

refer_break_ra   number(18,4),

indust_id        varchar2(20 byte),

deptid          varchar2(10 byte)

)partition by range (occur_date)   

(partition p_other values less than (maxvalue)

);---2、交換資料(資料從非分割槽表到分割槽表)

alter table tbl_stock_balance_log_part1 exchange partition p_other with tabletbl_stock_balance_log;

---select * from tbl_stock_balance_log_part1;

---3、查詢分割槽表資料

select to_char(occur_date, 'yyyy-mm'), count(*) fromtbl_stock_balance_log_part1 group by to_char(occur_date, 'yyyy-mm');

---輔助指令碼

select

'alter table tbl_stock_balance_log_part1 split partition p_other at(to_date('''||to_char(occur_date,'yyyy-mm')||''',''yyyy-mm'')) into (partitionp'||to_char(occur_date,'yyyymm')|| ',partition p_other);'

from tbl_stock_balance_log_part1

group by to_char(occur_date,'yyyy-mm'),to_char(occur_date,'yyyymm')

order by to_char(occur_date,'yyyymm')

---執行指令碼生成語句

alter table tbl_stock_balance_log_part1 split partition p_other at(to_date('2011-08','yyyy-mm'))

into (partition p201108,partition p_other);

alter table tbl_stock_balance_log_part1 split partition p_other at(to_date('2011-09','yyyy-mm'))

into (partition p201109,partition p_other);

---4、刪除非分割槽表

drop table tbl_stock_balance_log purge;

---5、將分割槽表重新命名為原分割槽表名

alter table tbl_stock_balance_log_part1 rename to tbl_stock_balance_log;

---6、測試

select table_name, partition_name from user_tab_partitions where table_name ='tbl_stock_balance_log';

select count(*) from tbl_stock_balance_log partition(p201109)

將普通表改為分割槽表

oracle的普通表沒有辦法通過修改屬性的方式直接轉化為分割槽表,必須通過重建的方式進行轉變,下面介紹三種效率比較高的方法,並說明它們各自的特點。方法一 利用原表重建分割槽表。步驟 sql create table t id number primary key,time date 表已建立。sql...

oracle將普通表改為分割槽表

oracle的普通表沒有辦法通過修改屬性的方式直接轉化為分割槽表,必須通過重建的方式進行轉變,下面介紹三種效率比較高的方法,並說明它們各自的特點。方法一 利用原表重建分割槽表。步驟 sql create table t id number primary key,time date 表已建立。sql...

hive 非分割槽表 匯入csv資料

示例1 use temp drop table tmp cuiwei main recommend create table if not exists tmp cuiwei main recommend sml sa id int,sml set time int,sml cancel time ...