全部产品
云市场

ALTER TABLE

更新时间:2020-05-29 18:06:26

ALTER TABLE用来对表的信息进行修改, 目前支持的操作包括:

  • 添加分区
  • 删除分区
  • 添加列
  • 修改列

目前ALTER TABLE的操作只支持OSS表。

添加分区

语法

  1. ALTER TABLE table_name ADD [IF NOT EXISTS] PARTITION partition_spec [LOCATION 'location'][, PARTITION partition_spec [LOCATION 'location'], ...];
  2. partition_spec:
  3. : (partition_column = partition_col_value, partition_column = partition_col_value, ...)

示例

  1. alter table test_opencsv_part
  2. add partition(dt = 'bar')
  3. location 'oss://bucket001/datasets/test/test_opencsv_part/dt=foo/';

删除分区

语法

  1. ALTER TABLE table_name DROP [IF EXISTS] PARTITION partition_spec[, PARTITION partition_spec, ...];

示例

  1. ALTER TABLE order_part DROP
  2. PARTITION (dt='2008-08-08', status='ready');

增加列

语法

  1. ALTER TABLE table_name ADD COLUMNS(col_name data_type);

示例

  1. alter table alter_table_add_column_db.parquet_test add columns(gender string);

修改列

语法

  1. ALTER TABLE table_name CHANGE [COLUMN] col_old_name col_new_name column_type
  2. [COMMENT col_comment];

示例

  1. CREATE TABLE test_change (a int, b int, c int);
  2. // First change column a’s name to a1.
  3. ALTER TABLE test_change CHANGE a a1 INT;
  4. // Add a comment to column a1
  5. ALTER TABLE test_change CHANGE a1 a1 INT COMMENT 'this is column a1';

说明

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