更新时间:2024-05-07 GMT+08:00
分享

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。

语法格式

增加列DDL语法接口:
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 }
    

参数说明

  • table_name

    分区表名。

    取值范围:已存在的分区表名。

  • partition_name

    分区名。

    取值范围:已存在的分区名。

  • partition_new_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');
时序表修改delta表相关参数:
1
ALTER TABLE CPU SET (enable_delta = false);
分享:

    相关文档

    相关产品