@有关HIVE表的表结构修改①

本文介绍了Hive中对表结构进行操作的基本语法,包括如何添加单个或多个列,修改列的名称、类型、位置和注释,以及删除列的方法。示例展示了具体的SQL语句,并强调了在实际使用中的注意事项。对于Hive表维护和管理具有实用价值。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、HIVE表添加列

①添加一个字段

ALTER TABLE [TABLE_NAME] ADD COLUMNS ([COLUMN_NAME] [COLUMN_TYPE]);

②添加多个字段

ALTER TABLE [TABLE_NAME] ADD COLUMNS ([COLUMNS_NAME1] [COLUMNS_TYPE],[COLUMNS_NAME2] [COLUMNS_TYPE],...);

2、修改HIVE表列名/类型/列位置/注释

①修改列名

ALTER TABLE [TABLE_NAME] CHANGE [COLUMNS_OLD_NAME] [COLUMNS_NEW_NAME] [COLUMNS_TYPE];

②修改类型

ALTER TABLE [TABLE_NAME] CHANGE [COLUMN_NAME] [COLUMN_NAME] [NEW_TYPE];

③修改列位置

ALTER TABLE [TABLE_NAME] CHANGE [COLUMN_NAME] [COLUMN_NAME] [FIRST|AFTER] [表中的某一列(如果是要放在第一列,即FIRST,就不用加后面的列明了)];

例如:

CREATE TABLE TABLE1 (USER_ID STRING,NAME STIRNG,SEX STRING);

第一次改变:

ALTER  TABLE TABLE1 CHANGE NAME NAME STRING AFTER SEX;

SHOW CREATE TABLE TABLE1;

CREATE TABLE TABLE1 (USER_ID STRING,SEX STIRNG,NAME STRING);

第二次改变:

ALTER  TABLE TABLE1 NAME NAME STRING FIRST;

SHOW CREATE TABLE TABLE1;

CREATE TABLE TABLE1 (NAME STRING,USER_ID STRING,SEX STIRNG);

④修改注释

ALTER TABLE [TABLE_NAME] CHANGE [COLUMN_NAME] [COLUMN_NAME] [COLUMN_TYPE] [COLUMN_COMMENT];

LAST BUT NOT LEAST,它们放在一起用的先后顺序是

ALTER TABLE [TABLE_NAME]
[COLUMN_OLD_NAME] [COLUMN_NEW_NAME] [COLUMNS_TYPE]
[COMMENT COLUMN_COMMENT]
[FIRST|(AFTER COLUMN_NAME)];

3、HIVE表删除列

显示建表语句:SHOW CREATE TABLE [TABLE_NAME];

CREATE TABLE TABLE1 (USER_ID STRING,NAME STIRNG,SEX STRING);

需求:删除NAME、SEX两列。

ALTER TABLE TABLE1 CHANGE REPLACE COLUMNS (USER_ID STRING);

(提示建表语句是为了用于列比较多的情况时来用,相信聪明的读者们都能理解!)

这次先码一些基础的语法,如果有错误的地方希望XDM能及时评论区告诉我一下,或者还有什么想了解的表结构也可以催更啦!!!

可以不爱,但请别伤害。

### 如何在 Hive 中更改的存储位置 在 Hive 中,可以通过 `ALTER TABLE` 命令来修改的存储位置。具体语法如下: ```sql ALTER TABLE table_name SET LOCATION 'new_location'; ``` 此命令允许用户将的数据移动到新的 HDFS 路径或其他支持的文件系统路径中[^4]。 #### 关键点说明 1. **新路径的要求** 新路径必须是个完整的 URI,并且包含 scheme 信息(例如 `hdfs://`)。如果不提供 scheme,则可能会导致操作失败。 2. **目录的存在性和权限** 如果目标路径不存在,Hive 会在执行过程中尝试创建该目录。然而,如果当前用户对该路径没有写入权限或者目标路径是非空目录,则可能导致异常或失败。 3. **分区的情况** 对于分区,可以单独设置某个分区的存储位置。其语法为: ```sql ALTER TABLE table_name PARTITION partition_spec SET LOCATION 'new_partition_location'; ``` 这里 `partition_spec` 是指具体的分区规范,例如 `(year=2023, month=1)`。 4. **双引号的必要性** 在指定新路径时,路径字符串必须被包裹在双引号 (`"`) 中,这是语法上的强制要求。 #### 示例代码 以下是几个常见的场景及其对应的 SQL 实现: - 更改整个的存储位置: ```sql ALTER TABLE my_table SET LOCATION 'hdfs://namenode:8020/new/path/to/data'; ``` - 更改特定分区的存储位置: ```sql ALTER TABLE my_partitioned_table PARTITION (year=2023, month=1) SET LOCATION 'hdfs://namenode:8020/new/path/to/partition_data'; ``` 通过上述方法,可以在不影响元数据的情况下重新定义或分区的实际存储位置。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值