当前位置: 首页 > 知识库问答 >
问题:

更改配置单元表添加或删除列

东方智敏
2023-03-14

我在配置单元中有orc表我想从这个表中删除列

ALTER TABLE table_name drop  col_name;

但我遇到以下异常

执行配置单元查询时出错:OK失败:ParseException行1:35输入“USER_ID1”不匹配,在drop PARTITION语句中的“drop”附近需要分区

有谁能帮助我或提供任何想法来做这件事吗?注意,我正在使用配置单元0.14

共有1个答案

王泓
2023-03-14

不能使用命令alter table table_name drop col_name;直接从表中删除列

删除列的唯一方法是使用replace命令。比方说,我有一个表emp有id、name和dept列。我想删除表EMP的id列。因此,在replace columns子句中提供所有要作为表一部分的列。下面的命令将从emp表中删除id列。

 ALTER TABLE emp REPLACE COLUMNS( name string, dept string);
 类似资料:
  • 我使用Hive1.2.1和TEZ0.7进行测试,但是当我使用acid表进行更新和删除时,出现了一些问题,下面是表的结构:

  • 我有一个配置单元表,其中一个date列上存在分区,但date列以YYYYMMDD格式存储为INT。该表还可以包含未来日期分区的数据。 现在,作为过程的一部分,我希望删除那些在处理日(位于处理日)上运行的分区。 当我编写drop分区时,比如,那么它工作正常。 考虑到我的输入将是唯一的日期格式YYYY-MM-DD和我已经删除所有分区已给出输入日期-1;如何使上述陈述奏效?

  • 我正在HIVE中编写代码来创建一个由1300行和6列组成的表: 现在,我想添加另一列,它包含所有1300行的唯一值,值将是。max_count是我现有表中的一列。我怎么能做到?我试图通过以下代码更改表

  • 我试过这个 如果存在分区(process_date='__hive_default_partition__'),则更改表Table_Name DROP; 我正在犯错误

  • 我必须删除大约7列,所以正在寻找一个优雅的方法

  • 我有一个配置单元外部表,有3个分区列(a,B,C),现在我想从分区中删除B和C列。这样做可能吗?我已经尝试使用Alter table tab_name drop column col_name;---但它会抛出一个错误,说明无法删除分区列。