使用选择和值创建临时表

问题描述 投票:0回答:2

我正在尝试在Hive中创建一个临时表,如下所示:

CREATE TEMPORARY TABLE mydb.tmp2 
AS SELECT * FROM (VALUES (0, 'abc')) 
AS T (id , mystr);

但是这给了我以下错误:

SemanticException [Error 10296]: Values clause with table constructor not yet supported

是否有另一种方法可以通过显式直接在同一命令中提供值来创建临时表?

我的最终目标是运行MERGE命令,并在USING命令之后插入临时表。所以像这样:

MERGE INTO mydb.mytbl
USING <temporary table>
...
hadoop hive temp-tables
2个回答
0
投票

Hive还不支持values构造函数。您可以使用以下查询来实现此目的:

CREATE TEMPORARY TABLE mydb.tmp2 
AS SELECT 0 as id, 'abc' as mystr;

对于合并,您可以使用临时表,如下所示:

merge into target_table
using ( select * from mydb.tmp2) temp
on temp.id = target_table.id
when matched then update set ...
when not matched then insert values (...);

0
投票

使用子查询而不是临时表:

MERGE INTO mydb.mytbl t
USING  (SELECT 0 as id, 'abc' as mystr) tmp on tmp.id = t.id
© www.soinside.com 2019 - 2024. All rights reserved.