是否可以从 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}
我有一个 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}