如何在配置单元中创建具有来自另一个表的特定列值的表

myss37ts  于 2021-05-31  发布在  Hadoop
关注(0)|答案(3)|浏览(295)

我刚到 hive ,有一些问题。我试图找到一个答案,在这里和其他网站,但没有运气。。。我也试过很多不同的问题,但都没有成功。
我有我的源表,我想创建这样的新表。
是:
id将是不同县的数量,作为自动递增的数字和主键
县作为县的不同名称(来自源表)

gr8qqesn

gr8qqesn1#

我不能给你确切的答案,因为我想你必须试着自己去做,如果你有问题或疑问,来这里告诉我们。但是,我能告诉你的是你可以用 insert 语句使用另一个表中的数据创建新表,即:

create table CARS (name string);
insert table CARS select x, y from TABLE_2;

您也可以使用 overwrite 语句,如果希望删除该表(cars)中的所有现有数据。
所以,手术将是

CREATE TABLE ==> INSERT OPERATION (OVERWRITE?) + QUERY OPERATION
ctrmrzij

ctrmrzij2#

hive不是rdbms数据库,因此没有主键或外键的概念。但您可以在配置单元中添加自动递增列。请尝试:

Create table new_table as 
select reflect("java.util.UUID", "randomUUID") id, countries from my_source_table;
erhoui1w

erhoui1w3#

你可以采用这种方法。
一个cta(createtable as select)用你的例子这个cta可以工作

CREATE TABLE t_county 
ROW FORMAT DELIMITED FIELDS TERMINATED BY ',' 
STORED AS TEXTFILE AS
WITH t AS(
SELECT DISTINCT county, ROW_NUMBER() OVER() AS id
FROM counties)
SELECT id, county
FROM t;

在配置单元上不能有主键或外键,因为在rbdms(如oracle或mysql)上不能有主键,因为配置单元是读模式,而不是像oracle那样写模式,所以不能在配置单元上实现任何类型的约束。

相关问题