是否可以从 Hive 中的哪个数据库中选择 select

Is it possible to choose to select from which database in Hive

我有一个 table 但在两个不同的数据库中。我如何才能基于某些标志查询到 select 仅来自其中之一?

例如:

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

这个 sudo 查询对应的(有效的)查询是什么?

您可以使用 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"

您可以在 Hive 中使用 UNION ALL 做类似的事情,尽管它不是有效的方法:

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
 INPUT_DATABASE = db1
 IF FLAG_one = TRUE and FLAG_two = FALSE THEN  INPUT_DATABASE = db2                                                                                                                                       
 INSERT OVERWRITE TABLE {OUTPUT_DATABASE}.{TABLE_ONE}                                                                                                                                      
 SELECT * FROM {INPUT_DATABASE}.{TABLE_TWO}