ALTER TABLE
功能描述
修改表,包括修改表的定义、重命名表、重命名表中指定的列、添加/更新多个列、打开/关闭行访问控制开关。
注意事项
- 只有时序表的所有者有权限执行ALTER TABLE命令,系统管理员默认拥有此权限。
- 不能修改分区表的tablespace,但可以修改分区的tablespace。
- 不支持修改存储参数ORIENTATION。
- SET SCHEMA操作不支持修改为系统内部模式,当前仅支持用户模式之间的修改。
- 修改时序表存储参数enable_delta时,不能与其他ALTER操作同时进行。
- Storage_parameter存储参数中的orientation和sub_partition_count不支持修改。
- 增加列必须有kvtype属性,且只能是tstag或者tsfiled两者之一。
- 删除的列不能是tstime类型,因为是分区列。
- 将delta表开关打开,将会创建delta表及自动写回任务;将delta表开关关闭,将会触发delta表强制delta表数据写入CU。
语法格式
1 2 |
ALTER TABLE [ IF EXISTS ] { table_name [*] | ONLY table_name | ONLY ( table_name ) } action [, ... ]; |
其中具体表操作action可以是以下子句之一:
- add column用于给时序表新增列:
1
ADD COLUMN column_name data_type [ kv_type ] [ compress_mode ]
其中时序表仅只能有一个TSTIME列,如果新增TSTIME列则会报错。
- drop_column用于给时序表删除列:
1
|DROP COLUMN [ IF EXISTS ] column_name [RESTRICT | CASCADE ]
drop column包含索引列时,会使用剩余的索引列重建索引。如果索引列都被剔除,则会使用前10列tag列重建索引。
- 修改时序表存储参数:
1
|SET ( { storage_parameter = value } [, ...] )
- 重命名表中指定的列:
1
RENAME [ COLUMN ] column_name to new_column_name;
- 将时序表的属主改变成指定的用户:
1
OWNER TO new_owner
- 此语法主要针对时序表扩容时使用,一般不建议使用:
1
ADD NODE ( nodename [, ...] )
- 给时序表添加分区:
1
ADD PARTITION part_new_name partition_less_than_item
- 删除分区表中的指定分区:
1
DROP PARTITION { partition_name }
- 清空时序表指定分区:
1
TRUNCATE PARTITION { partition_name }
参数说明
示例
创建简单的时序表:
1 2 3 4 5 6 7 |
CREATE TABLE CPU( idle numeric TSField, IO numeric TSField, scope text TSTag, IP text TSTag, time timestamp TSTime ) with (TTL='7 days', PERIOD = '1 day', orientation=TIMESERIES); |
时序表增加列:
1
|
ALTER TABLE CPU ADD COLUMN memory numeric TSField; |
时序表删除列:
1
|
ALTER TABLE CPU DROP COLUMN idle; |
时序表修改列名:
1
|
ALTER TABLE CPU RENAME scope to scope1; |
时序表修改TTL,设置分区存活的时间为7天:
1
|
ALTER TABLE CPU SET (TTL = '7 day'); |
时序表修改Period,设置分区创建的周期为1天:
1
|
ALTER TABLE CPU SET (PERIOD = '1 day'); |
1
|
ALTER TABLE CPU SET (enable_delta = false); |