HIVE:CREATE TABLE AS SELECT命令无法指定目标表的列列表

时间:2017-04-03 07:30:27

标签: hadoop hive

我该如何做到这一点?

  hive> desc temp;
  OK
  a                     int                                         
  b                     int                                         
  Time taken: 0.077 seconds, Fetched: 2 row(s)

我想用列名c和d创建t2 HIVE表,但是低于错误。

  hive> create table t2(c int,d int) as select a,b from temp;
  FAILED: SemanticException [Error 10065]: CREATE TABLE AS SELECT command         cannot specify the list of columns for the target table

2 个答案:

答案 0 :(得分:4)

您不必再次提及表模式,因为您指定从另一个表中获取模式。所以你的表创建语句应该像

create table t2 as select a,b from temp;

答案 1 :(得分:0)

我知道这是旧的,但根据定义,但如果其他人有同样的问题,答案非常简单。

根据定义,create table t2 as select a as c, b as d from temp; 用于将结果集保存为表。这意味着如果您希望新表具有不同的列名,则需要使用不同的结果集来创建它。一种简单的方法是使用列别名:

firstChar

我知道你说你不想这样做(虽然有一个小错字 - 你的查询会失败,因为它会尝试命名两个列c),但希望这解释了为什么你应该这样接近它:您需要构建一个数据集,其元数据与您要创建的表匹配。