修改外部表(ALTER EXTERNAL TABLE)

通过

ALTER TABLE
ALTER TABLE
命令可以对外部表进行元数据修改,包括重命名、设置注释、增减列和修改属性。

支持的操作

操作外部表普通表
重命名(RENAME)支持支持
修改注释(SET COMMENT)支持支持
增加列(ADD COLUMN)支持支持
删除列(DROP COLUMN)支持支持
修改属性(SET PROPERTIES)支持支持
修改存储路径(SET LOCATION)不支持
刷新元数据(REFRESH METADATA)不支持
修改分桶/排序键不支持不支持

语法

重命名表

ALTER TABLE [schema.]table_name RENAME TO new_table_name;

修改表注释

ALTER TABLE [schema.]table_name SET COMMENT 'comment_text';

增加列

ALTER TABLE [schema.]table_name ADD COLUMN col_name data_type [COMMENT 'comment'];

删除列

ALTER TABLE [schema.]table_name DROP COLUMN col_name;

修改表属性

ALTER TABLE [schema.]table_name SET PROPERTIES('key' = 'value' [, 'key2' = 'value2' ...]);

参数说明

参数必填说明
schema
schema
表所在 Schema,不指定则使用当前 Schema
table_name
table_name
要修改的外部表名称
new_table_name
new_table_name
RENAME 时必填新表名,不需要加 Schema 前缀
col_name
col_name
ADD/DROP COLUMN 时必填列名
data_type
data_type
ADD COLUMN 时必填列的数据类型
key
key
/
value
value
SET PROPERTIES 时必填表属性的键值对,目前为保留参数

使用示例

  1. 将外部表
    ext_orders
    ext_orders
    重命名为
    ext_orders_v2
    ext_orders_v2

ALTER TABLE doc_test.ext_orders RENAME TO ext_orders_v2;

  1. 为外部表添加注释,并通过
    DESC EXTENDED
    DESC EXTENDED
    验证:

ALTER TABLE doc_test.ext_orders_v2 SET COMMENT 'External orders table from OSS'; DESC EXTENDED doc_test.ext_orders_v2;

+------------------------------+--------------------------------------------+---------+ | column_name | data_type | comment | +------------------------------+--------------------------------------------+---------+ | order_id | int | | | customer_id | int | | | amount | decimal(10,2) | | | | | | | # detailed table information | | | | schema | doc_test | | | name | ext_orders_v2 | | | comment | External orders table from OSS | | | external | true | | | format | PARQUET | | | location | "oss://czlakehouse/doc_test/orders/" | | | connection | quick_start.oss_sh_conn_ak | | +------------------------------+--------------------------------------------+---------+

  1. 为外部表增加一列:

ALTER TABLE doc_test.ext_orders_v2 ADD COLUMN region STRING COMMENT '订单所属区域';

  1. 删除外部表的某一列:

ALTER TABLE doc_test.ext_orders_v2 DROP COLUMN region;

  1. 修改外部表的属性:

ALTER TABLE doc_test.ext_orders_v2 SET PROPERTIES('owner' = 'data_team');

注意事项

  • 外部表的
    ALTER TABLE
    ALTER TABLE
    操作只修改 Lakehouse 内的元数据,不会影响底层存储(OSS/S3/COS)中的实际数据文件
  • 外部表不支持
    SET LOCATION
    SET LOCATION
    (修改存储路径)和
    REFRESH METADATA
    REFRESH METADATA
    (刷新元数据)操作,执行时会报语法错误。
  • ADD COLUMN
    ADD COLUMN
    /
    DROP COLUMN
    DROP COLUMN
    修改的是 Lakehouse 侧对外部表的 Schema 定义,底层文件的实际结构不受影响。若底层文件格式(如 Parquet)中没有对应列,查询该列将返回 NULL。
  • RENAME TO
    RENAME TO
    后的新表名不需要加 Schema 前缀,表仍保留在原 Schema 下。
  • 对于 Delta/Iceberg 等格式的外部表,Schema 演化建议通过原生格式的 Schema Evolution 机制处理,而非 Lakehouse 侧的
    ALTER TABLE
    ALTER TABLE
联系我们
预约咨询
微信咨询
电话咨询