DB2 分割槽表增加分割槽

2021-06-13 04:22:07 字數 2611 閱讀 3906

最近,需要在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號分割槽...