gbase8s 为数据表添加新分区

这是一个用于GBase8s数据库的shell脚本,主要功能是将名为bmsql_order_line的表重命名为bmsql_order_line_bak,然后创建一个新的分区表t2,采用FRAGMENT BY EXPRESSION进行分区,并将原表数据附加到新分区中。最后,将新表重命名为原表名并添加主键约束。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

gbase8s 为数据表添加新分区

#!/bin/sh
function rename(){
db=$1
dbaccess $db - <<EOF
rename table bmsql_order_line to bmsql_order_line_bak;
drop table if exists t2;
create table t2(
ol_w_id integer not null,
ol_d_id integer not null,
ol_o_id integer not null,
ol_number integer not null,
ol_i_id integer not null,
ol_delivery_d datetime year to second,
ol_amount decimal(6,2),
ol_supply_w_id integer,
ol_quantity integer,
ol_dist_info char(24)
)FRAGMENT BY EXPRESSION
PARTITION p1 ol_w_id<10 and ol_w_id >=1 in dbs3,
PARTITION p2 ol_w_id<20 and ol_w_id >=10 in dbs3,
PARTITION p3 ol_w_id<30 and ol_w_id >=20 in dbs3,
PARTITION p4 ol_w_id<40 and ol_w_id >=30 in dbs3,
PARTITION p5 ol_w_id<50 and ol_w_id >=40 in dbs3,
PARTITION p6 ol_w_id<60 and ol_w_id >=50 in dbs3,
PARTITION p7 ol_w_id<70 and ol_w_id >=60 in dbs3,
PARTITION p8 ol_w_id<80 and ol_w_id >=70 in dbs3,
PARTITION p9 ol_w_id<90 and ol_w_id >=80 in dbs3,
PARTITION p10 ol_w_id<101 and ol_w_id >=90 in dbs3;
alter table bmsql_order_line_bak drop constraint ${delidxname};
alter fragment on table t2 attach bmsql_order_line_bak as partition p11 ol_w_id<111 and ol_w_id >=101;
rename table t2 to bmsql_order_line;
alter table bmsql_order_line add constraint primary key(ol_w_id,ol_d_id,ol_o_id,ol_number) constraint $delidxname;
EOF
}


if [[  -z $GBASEDBTDIR ]];then
	echo "请设置数据库的环境变量 "
	exit 1;
fi

dbname=$1
delidxname="idx_order_line"
if [[ -z $dbname ]];then
	dbname="benchmarksql"
fi
rename $dbname
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值