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

在配置单元中一次删除多列

阎星河
2023-03-14
Alter table t drop column a1,a2 

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

共有1个答案

浦德明
2023-03-14

我在蜂巢方面没有经验,但我的发现可能对你有帮助!

看来,我们不能使用命令ALTER table table_name drop col_name直接从表中删除列;

因此,在replace columns子句中提供所有要作为表一部分的列。例如,emp表包含以下列Id、Name、Dept、Email、Address、Salary,如果我们想删除Address和Salary列,那么查询将如下所示

ALTER TABLE emp REPLACE COLUMNS( Id int, Name string, Dept string, Email string);

注意:但是上面的语句只能更改表的模式,而不能更改数据

就像您应该在REPLACE子句中提到所有列(这是您希望保留在表中的列)的方式一样。

从此处引用(&here)

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

  • 我在配置单元中有orc表我想从这个表中删除列 但我遇到以下异常 执行配置单元查询时出错:OK失败:ParseException行1:35输入“USER_ID1”不匹配,在drop PARTITION语句中的“drop”附近需要分区 有谁能帮助我或提供任何想法来做这件事吗?注意,我正在

  • 我已经根据日期yyyy-mm-dd对配置单元表进行了分区。我想每天运行一个脚本,可以删除所有超过30天的分区,但在这种情况下,我不想超过日期。我希望它采取系统日期和删除超过30天的分区。

  • 我使用Hive1.2.1和TEZ0.7进行测试,但是当我使用acid表进行更新和删除时,出现了一些问题,下面是表的结构:

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

  • 我有一个外部配置单元表,其中有诸如year=2017,year=2018之类的分区,在它们内部,我还有year=2017和year=2018的每个月的分区。 如果是内部表,会发生什么情况?