把非分割槽表改為分割槽表
--說明:把非分割槽表改為分割槽表適用於歷史表
---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 ...