使用其他列在hive中创建表

时间:2016-01-07 06:40:51

标签: sql hadoop hive bigdata

我是Hive的新手。我想在配置单元中创建具有与现有表相同的列以及一些其他列的表。我知道我们可以使用这样的东西。

CREATE TABLE new_table_name
AS
SELECT *
FROM old_table_name

这将创建与old_table_name具有相同列的表。

但是如何在new_table_name中指定其他列?

3 个答案:

答案 0 :(得分:4)

以下是如何实现目标:

  

旧表:

hive> describe departments;
OK
department_id           int                     from deserializer   
department_name         string                  from deserializer   
  

创建表格:

create table ctas as 
select department_id, department_name, 
cast(null as int) as col_null 
from departments;
  

显示新表的结构:

hive> describe ctas;
OK
department_id           int                                         
department_name         string                                      
col_null                int                                         
Time taken: 0.106 seconds, Fetched: 3 row(s)
  

新表的结果:

hive> select * from ctas;
OK
2       Fitness         NULL
3       Footwear        NULL
4       Apparel         NULL
5       Golf            NULL
6       Outdoors        NULL
7       Fan Shop        NULL
8       TESTING         NULL
8000    TESTING         NULL
9000    testing export  NULL

答案 1 :(得分:1)

简单的方法是发出ALTER TABLE命令,在上述CREATE语句后添加更多(附加)列。

答案 2 :(得分:0)

首先创建一个像第一个一样的新表 然后改变这个新表并添加你想要的列。

CREATE TABLE new_table LIKE old_table;
ALTER TABLE new_table ADD COLUMNS (newCol1 int,newCol2 int);

如果您希望避免数据复制,请将表格设为外部

我希望它能帮到你:)。