📜  Hive – 改变表

📅  最后修改于: 2021-10-27 06:49:45             🧑  作者: Mango

Hive为我们提供了对表和数据库执行更改的功能。 ALTER TABLE命令可用于对表执行更改。我们可以修改与Hive的表架构关联的多个属性。更改表修改或更改其元数据,并且不会影响表内可用的实际数据。一般来说,当我们在创建表结构时出现一些错误时,我们会使用ALTER TABLE来更改模式的特征。我们可以对表模式执行多项操作,例如重命名表名、添加列、更改或替换列名等。

要执行以下操作,请确保您的配置单元正在运行。以下是在本地系统上启动配置单元的步骤。

第 1 步:启动所有 Hadoop 守护进程

start-dfs.sh                    # this will start namenode, datanode and secondary namenode
start-yarn.sh                   # this will start node manager and resource manager  
jps                             # To check running daemons

第 2 步:从终端启动 hive

hive

让我们在 hive 中使用一个字符串类型的属性demo_name制作一个表演示(默认情况下,如果未指定,hive 会在其默认数据库中制作表)。

CREATE TABLE IF NOT EXISTS demo (
demo_name STRING
)
ROW FORMAT DELIMITED
FIELDS TERMINATED BY ','; 

让我们一一执行我们可以使用 ALTER TABLE 执行的每个操作。

1.重命名表名

ALTER TABLE with RENAME 用于更改配置单元中现有表的名称。

句法:

ALTER TABLE  RENAME TO ;

命令:

让我们将演示中的表名重命名为customer

ALTER TABLE demo RENAME TO customer;

在上图中,我们可以观察到我们的表名已更改为customer

2. 添加列

句法:

命令:

让我们在重命名演示后获得的客户表中添加一列联系人

我们可以使用以下命令描述该表以查看其属性。

DESCRIBE customer;

我们已成功将联系人列添加到客户表中。

3. 更改列

ALTER TABLE 中的 CHANGE 用于更改现有列或属性的名称或数据类型。

句法:

ALTER TABLE  CHANGE   ;

命令:

让我们将demo_name属性更改为customer_name

ALTER TABLE customer CHANGE demo_name customer_name STRING; 

4. 更换列

REPLACE with ALTER TABLE 用于从Hive的表中删除所有现有列。在 ALTER TABLE REPLACE 语句中添加的属性或列将替换为较旧的列。

句法:

ALTER TABLE  REPLACE COLUMNS (
 ,
 ,
.
.
.
);

例如,在我们的客户表中,我们有 2 个属性customer_namecontact。如果我们想删除联系人属性,查询应该如下所示。

命令:

ALTER TABLE customer REPLACE COLUMNS (
customer_name STRING
);

我们应该提到我们想要的列。

在上图中,我们可以观察到我们已经成功删除了 column contact 。 Hive没有任何 DROP 语句来删除表内的列。如果我们想删除特定的列,我们必须使用 REPLACE。