ALTER TABLE用来对表的信息进行修改。

背景信息

目前ALTER TABLE支持的操作包括:
  • 添加分区。
  • 删除分区。
  • 添加列。
  • 修改列。

注意事项

  • 目前ALTER TABLE的操作只支持OSS表。
  • 不支持对partition key做修改。
  • 不支持修改内表的列类型。
  • 如果表中存在大量的分区,修改列名称和类型会很耗时,请谨慎操作。

添加分区

语法
ALTER TABLE table_name ADD [IF NOT EXISTS] PARTITION partition_spec [LOCATION 'location'][, PARTITION partition_spec [LOCATION 'location'], ...];
 partition_spec:
  : (partition_column = partition_col_value, partition_column = partition_col_value, ...)
示例
alter table test_opencsv_part 
add partition(dt = 'bar') 
location 'oss://bucket001/datasets/test/test_opencsv_part/dt=foo/';

删除分区

语法
ALTER TABLE table_name DROP [IF EXISTS] PARTITION partition_spec[, PARTITION partition_spec, ...];
示例
ALTER TABLE order_part DROP
PARTITION (dt='2008-08-08', status='ready');

添加列

语法
ALTER TABLE table_name  ADD COLUMNS(col_name data_type);
示例
alter table alter_table_add_column_db.parquet_test add columns(gender string);

修改列

语法
ALTER TABLE table_name CHANGE [COLUMN] col_old_name col_new_name column_type
  [COMMENT col_comment];
示例
CREATE TABLE test_change (a int, b int, c int);

// First change column a’s name to a1.
ALTER TABLE test_change CHANGE a a1 INT;

// Add a comment to column a1
ALTER TABLE test_change CHANGE a1 a1 INT COMMENT 'this is column a1';