|
应用场景:大数据
--1)、创建一个分区表
create table a
( statis_date varchar2(8),
id number,
name varchar2(50),
salary number
)
partition by list(statis_date)
( partition Day_20121130 values('20121130'),
partition Day_20121201 values('20121201'),
partition Day_20121202 values('20121202'),
partition Day_20121203 values('20121203'),
partition Day_20121204 values('20121204')
)
--2)、插入数据
insert into a (statis_date,id,name,salary) values('20121130',1,'a',1000);
insert into a (statis_date,id,name,salary) values('20121201',2,'b',2000);
insert into a (statis_date,id,name,salary) values('20121202',3,'c',3000);
insert into a (statis_date,id,name,salary) values('20121203',4,'d',4000);
insert into a (statis_date,id,name,salary) values('20121204',6,'f',6000);
insert into a (statis_date,id,name,salary) values('20121205',5,'e',5000); commit;
--3)、查询数据
select * from a where a.statis_date='20121130'--按分区查询数据
--4)、删除数据
alter table a truncate partition Day_20121130;--按分区删除数据
--5)、增加分区
alter table a add partition Day_20121204 values('20121204');
--)、drop 分区
alter table a drop partition Day_20121204
附加为表循环增加分区的sql: declare j number :=1;
m varchar2(50) :='20130104';
vv_sql varchar2(100) ; begin
while (j<=1825) loop
vv_sql :='alter table dw_cdr_unsuccessfulcall_day add partition Day_'||m ||' '||'values('||m||')'; execute immediate vv_sql; m := to_char(to_date('20130104','yyyymmd')+j,'yyyymmdd');
j:= j+1;
end loop; end;
|