在Hive SQL中,根据具有分区键的另一个表中的列创建表

时间:2016-05-05 08:06:13

标签: sql hadoop hive

我想基于现有表中的列创建一个新表,在hive中添加一个新的分区col。

我想在hive sql中实现目标。

除了以下的sql还是使用像kettle这样的ETL工具之外还有其他方法。

  

如果不存在则创建表table_name(
  COL1,
  COL2,
  COL3,
  ......,
  科隆
  )由dt划分;

其中col1到coln来自已存在的旧表,而dt则是新添加的分区键。

因为旧表太大,可能有数百列,列出它们会很累。

但是,以下sql显示语法错误:

  

如果不存在,则创建表table_name,如dt;

分区的old_table_name

所以我想知道在hive sql中有没有其他更好的方法来解决这个问题?谢谢。

1 个答案:

答案 0 :(得分:1)

如果所有列和dt列您可以使用以下方法创建分区表:

CREATE TABLE newtable (col1 int, col2 string) PARTITIONED BY (dt string) AS
SELECT col1 , col2, dt FROM oldtable WHERE dt is not null;