全部产品
云市场

ALTER TABLE

更新时间:2020-02-13 10:02:54

添加分区

语法

  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, ...)

注意: 新增分区时使用IF NOT EXISTS,且新增分区已存在时,新的LOCATION会覆盖原有分区所指向的目录。

示例

  1. alter table test_opencsv_part add partition(dt = 'bar') location 'oss://oss-cn-beijing-for-openanalytics-test/datasets/test/test_opencsv_part/dt=foo/';

删除分区

语法

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

注意:

  • 删除分区命令目前只支持以分区列名=分区列值指定删除指定分区。不支持以表达式指定分区值,例如partitionCol > 100

  • 如果已经删除的分区目录符合分区命名规则即分区列名=分区列值,则执行MSCK命令将自动添加已经删除的分区。

示例

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

注意事项

目前只有Parquet和Orc格式的数据源支持增加列功能。

示例

本示例以Parquet格式的表为例介绍增加列功能。

  1. 创建OSS Schema。

    1. CREATE SCHEMA alter_table_add_column_db with dbproperties
    2. (
    3. catalog = 'oss',
    4. location = 'oss://oss-bucket/datasets/test/');
  2. 创建Parquet类型的表。

    1. CREATE EXTERNAL TABLE alter_table_add_column_db.parquet_test (
    2. id int,
    3. name string,
    4. age int
    5. )
    6. STORED AS parquet
    7. LOCATION 'oss://oss-bucket/datasets/test/alter_table_add_column_db/parquet_test/'
    8. TBLPROPERTIES (
    9. 'auto.create.location' = 'true'
  3. 向表中插入一条数据。

    1. insert into alter_table_add_column_db.parquet_test values (1, 'james', 10);
    2. +------+
    3. | rows |
    4. +------+
    5. | 1 |
    1. select * from alter_table_add_column_db.parquet_test;
    2. +------+-------+------+
    3. | id | name | age |
    4. +------+-------+------+
    5. | 1 | james | 10 |
  4. 通过以下命令向表中增加一列。

    1. alter table alter_table_add_column_db.parquet_test add columns(gender string);
  5. 可以通过查询数据确认是否成功增加列。

    1. select * from alter_table_add_column_db.parquet_test;
    2. +------+-------+------+--------+
    3. | id | name | age | gender |
    4. +------+-------+------+--------+
    5. | 1 | james | 10 | NULL |