首页 > 解决方案 > 是否可以选择从 Hive 中的哪个数据库中选择

问题描述

我有一张桌子,但在两个不同的数据库中。如何根据某些标志查询以仅从其中一个中选择?

例如:

   insert into db2.table2
   select * from db1.table1 if flag is true else select * from db2.table

此 sudo 查询的相应查询(有效)是什么?

标签: mysqlsqlselecthivehiveql

解决方案


您可以使用 shell 传递数据库参数

#!/bin/bash

#calculate database as you want here
db=db1

#substitute variable and execute
hive -e "insert into db2.table2
   select * from $db.table1"

您可以使用 UNION ALL 在 Hive 中执行类似操作,尽管这不是有效的方法:

INSERT OVERWRITE TABLE OUTPUT_TABLE                                                                                                                                      
 SELECT * FROM DB1.TABLE1 WHERE (${FLAG_one} = TRUE) --any boolean condition
 UNION ALL
 SELECT * FROM DB2.TABLE1 WHERE  (${FLAG_one} = FALSE) --any boolean condition

推荐阅读