建立分割槽表(按照年份分割槽,自動新增分割槽)

2022-02-13 02:25:06 字數 1436 閱讀 6081

建立分割槽表aaa,通過字段建立時間的年份來分割槽,分割槽表自動根據插入的資料新增對應的分割槽,不過此處自動建立的分割槽名稱為系統建立的,如:sys_24。

create table aaa 

( id number(8),

createtime date,

value number(8)

) partition by range(createtime)

interval(numtoyminterval(1,'year'))

( partition p2014 values less than(to_date('2015-01-01','yyyy-mm-dd'))

);

不過,這種分割槽名稱難以使用,故後面會使用儲存過程來修改分割槽表的分割槽名。

create or replace procedure pro_modified_partition_name

ascursor partitiionlist

is select table_name,partition_name,tablespace_name,high_value from user_tab_partitions where table_name ='

aaa' and instr(partition_name, '

sys') > 0

; row_p partitiionlist%rowtype;

pname varchar2(

100);

hv varchar2(

2000

);hv_year number;

pnewname varchar2(

100);

sql_stmt varchar2(

200);

begin

open partitiionlist;

for row_p in

partitiionlist loop

pname:=row_p.partition_name;

hv:=row_p.high_value;

hv_year := to_number(substr(hv,11,4))-1

; pnewname := '

p'||hv_year;

--執行alter語句要使用動態sql(execute immediate)

sql_stmt := '

alter table aaa rename partition

'||pname||'

to '||pnewname;

execute immediate sql_stmt;

end loop row_p;

close partitiionlist;

end;

通過分割槽表的high_value值來擷取對應的時間,再用以修改為分割槽名。

Oracle 為分割槽表新增新分割槽

關鍵字 需求 新增分割槽 離線訊息表offlmg,在原有分割槽的基礎上新增乙個分割槽。分析 資料量大 1.該錶有50張,從offlmg 0到offlmg 49,資料量比較大,最少的一張有幾千萬資料,50g左右,最大的一張有幾億資料,超過300g.2.該錶為list分割槽表,有default分割槽,且...

Oracle 建立分割槽表

建立表空間 create tablespace mytablespace 1 datafile c oracle product 10.1.0 oradata mydata mytablespace1.dbf size 100m extent management local uniform siz...

hive 建立分割槽表

必須在表定義時建立partition a 單分割槽建表語句 create table day table id int,content string partitioned by dt string 單分割槽表,按天分割槽,在表結構中存在id,content,dt三列。以dt為資料夾區分 b 雙分割...