表更名 SQL:

1
alter table 旧表名 rename to 新表名;

执行该命令之后,表数据所在的位置(LOCATION)会移动到新的路径下。

例如,将表 test.dws_staff_kpi_day 重命名为 test.dws_staff_kpi_month

在更名前,查看表 test.dws_staff_kpi_day 所在的位置:

1
show create table test.dws_staff_kpi_day;

结果如下所示,可以看到表数据位于 hdfs://hdp-cluster/apps/hive/warehouse/test.db/dws_staff_kpi_day 目录下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
CREATE TABLE `test.dws_staff_kpi_day`(
`user_id` int COMMENT '用户ID',
`phone` string COMMENT '手机号码',
...)
COMMENT '用户核心指标模型'
PARTITIONED BY (
`dt` string COMMENT '日期,格式yyyyMMdd')
ROW FORMAT SERDE
'org.apache.hadoop.hive.ql.io.parquet.serde.ParquetHiveSerDe'
STORED AS INPUTFORMAT
'org.apache.hadoop.hive.ql.io.parquet.MapredParquetInputFormat'
OUTPUTFORMAT
'org.apache.hadoop.hive.ql.io.parquet.MapredParquetOutputFormat'
LOCATION
'hdfs://hdp-cluster/apps/hive/warehouse/test.db/dws_staff_kpi_day'
TBLPROPERTIES (
'last_modified_by'='hadoop',
'last_modified_time'='1667206490',
'parquet.compression'='SNAPPY',
'transient_lastDdlTime'='1667206490')

现在,将表 test.dws_staff_kpi_day 重命名为 test.dws_staff_kpi_month

1
alter table test.dws_staff_kpi_day rename to test.dws_staff_kpi_month;

查看重命名后的表 test.dws_staff_kpi_month 的数据位置

1
show create table test.dws_staff_kpi_month;

结果如下,表数据目录更新为 hdfs://hdp-cluster/apps/hive/warehouse/test.db/dws_staff_kpi_month

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
CREATE TABLE `test.dws_staff_kpi_day`(
`user_id` int COMMENT '用户ID',
`phone` string COMMENT '手机号码',
...)
COMMENT '用户核心指标模型'
PARTITIONED BY (
`dt` string COMMENT '日期,格式yyyyMMdd')
ROW FORMAT SERDE
'org.apache.hadoop.hive.ql.io.parquet.serde.ParquetHiveSerDe'
STORED AS INPUTFORMAT
'org.apache.hadoop.hive.ql.io.parquet.MapredParquetInputFormat'
OUTPUTFORMAT
'org.apache.hadoop.hive.ql.io.parquet.MapredParquetOutputFormat'
LOCATION
'hdfs://hdp-cluster/apps/hive/warehouse/test.db/dws_staff_kpi_month'
TBLPROPERTIES (
......)

(END)