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';