使用select子句创建表

时间:2016-01-05 10:15:23

标签: hive

我尝试使用CTAS样式创建表格(Create As Select。 如果在select查询中找不到数据,则Hive会出错。

我尝试过这样的事情,

from 
(
select A.a,B.b from A join B on A.v=B.d
)tmp

create table test
as
select tmp.a,tmp.b
where tmp.a=100

注意:没有数据匹配tmp.a = 100

那么,有什么方法可以解决这种情况! 我的意思是,如果在select子句中找到数据,则创建一个表,否则,它不应该创建表或者不应该抛出任何错误,否则它应该创建一个空表

1 个答案:

答案 0 :(得分:1)

最简单的方法是创建表并使用插入。它也更能抵御错误,这就是为什么这种形式在任何情况下都是不可取的(参见编程语言中的静态类型)

但是,您也可以使用包含单行的表来UNION您的select子句,然后删除该行。

CREATE TABLE foo AS 
( SELECT id,value from BAR)
(SELECt "-1" as id, -5 as value);

DELETE FROM foo WHERE id=-1;

(不合适的sql,但希望这个想法可以理解)

如果您只想创建表格,可以

CREATE TABLE foo LIKE bar;
INSERT INTO ...

插入可能会再次抛出错误(不要在这里运行HIVE)。