最近,需要在db2的分割槽表中增加新的分割槽,用於儲存資料,因此,就研究了db2表的分割槽機制。現在總結,實現的方式共有三種,分別是:
1)、建立臨時表,將原表資料匯入臨時表,之後將原表重建,擴大分割槽;
2)、通過alter table tab_name add partition,為表增加分割槽;
3)、建立臨時分割槽表,向臨時分割槽表中匯入資料,之後將臨時分割槽表設定為主表的乙個分割槽。
下面將分別說明三種方式的具體實現:
前提:原分割槽表part_main,建表sql為:
create table part_main(
p_id varchar(10),
p_date date
)partition by range(p_date) (
partition others starting minvalue ending '2012-03-31',
partition p201204 starting '2012-04-01' ending '2012-04-30',
partition p201205 starting '2012-05-01' ending '2012-05-31',
partition p201206 starting '2012-06-01' ending '2012-06-30'
);
需要為part_main表,增加2012-12-01--2012-12-31的資料分割槽。
方法一:
a、建立臨時表
create table tmp_part_main like part_main;
b、將資料匯入臨時表中
insert into tmp_part_main select *
from part_main;
c、重建原表
drop table part_main;
create table part_main(
p_id varchar(10),
p_date date
)partition by range(p_date) (
partition others starting minvalue ending '2012-03-31',
partition p201204 starting '2012-04-01' ending '2012-04-30',
partition p201205 starting '2012-05-01' ending '2012-05-31',
partition p201206 starting '2012-06-01' ending '2012-06-30',
partition p201212 starting '2012-12-01' ending '2012-12-31'
);
d、將資料從臨時表匯入原表中
insert into part_main select * from tmp_part_main;
注:該方法是最簡單的一種實現方式,不需要掌握db2分割槽知識,就可以實現,對於老鳥來說,這種方式是不屑使用的。下面的方法將是技術提公升階段。
方法二:
a、為表增加分割槽
alter table part_main add partition p201212 starting '2012-12-01' ending '2012-12-31'
;
b、增加分割槽ok,插入資料即可
注:該方法是最直接的,只要記住alter table tab_name add partition命令就ok。
方法三:
a、建立臨時分割槽表
create table part_other (
p_id varchar(10),
p_date date
)partition by range(p_date) (
partition p201212 starting '2012-12-01' ending '2012-12-31'
);
b、往臨時表中增加資料(此步可以省略,在最後一步執行)
c、將臨時分割槽表設為原表的乙個分割槽
alter table part_main attach
partition p201212 starting '2012-12-01' ending '2012-12-31'
from part_other
;
注:此命令執行後,臨時分割槽表par
t_other,將不以表的方式存在,而是作為part_main表的乙個分割槽。
d、為原表新增加的分割槽,設定訪問許可權
set integrity for part_main
allow write access
immediate checked
;
ok,分割槽增加完成,可以往新分割槽中增加資料了。
注:該方法實現起來過於繁瑣,建議了解就好。
如果想繼續了解db2的分割槽功能,可參考另一篇文章:
db2 增加刪除分割槽
1.建立分割槽表,inclusive 包含 exclusive 不包含 create table mabas bas mid trans list ck bak report date date,ma acct no varchar 100 trans date date,org unit id v...
oracle和db2分割槽表操作比較及簡要分析
db2分割槽表的建立及分割槽索引建立可參考 1 刪除乙個分割槽 1 oralce中刪除分割槽 part 201407 alter table dw dep acct detail history drop partition part 201407 2 db2中刪除分割槽 part 201407 在...
db2 最大分割槽數 DB2表分割槽資料清空維護
清空一張表的資料,我們可以truncate這張表,亦或是用replace的方式載入乙個空檔案來清空表。那麼如果現在我只需清空表的某個分割槽的資料話,要如何來做呢?2b青年說 直接delete 條件嘛。那好,現在我有張表的情況是這樣的 每個分割槽中都有1g多點的資料,現在用delete來刪除1號分割槽...