我刚到 hive ,有一些问题。我试图找到一个答案,在这里和其他网站,但没有运气。。。我也试过很多不同的问题,但都没有成功。我有我的源表,我想创建这样的新表。是:id将是不同县的数量,作为自动递增的数字和主键县作为县的不同名称(来自源表)
gr8qqesn1#
我不能给你确切的答案,因为我想你必须试着自己去做,如果你有问题或疑问,来这里告诉我们。但是,我能告诉你的是你可以用 insert 语句使用另一个表中的数据创建新表,即:
insert
create table CARS (name string); insert table CARS select x, y from TABLE_2;
您也可以使用 overwrite 语句,如果希望删除该表(cars)中的所有现有数据。所以,手术将是
overwrite
CREATE TABLE ==> INSERT OPERATION (OVERWRITE?) + QUERY OPERATION
ctrmrzij2#
hive不是rdbms数据库,因此没有主键或外键的概念。但您可以在配置单元中添加自动递增列。请尝试:
Create table new_table as select reflect("java.util.UUID", "randomUUID") id, countries from my_source_table;
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那样写模式,所以不能在配置单元上实现任何类型的约束。
3条答案
按热度按时间gr8qqesn1#
我不能给你确切的答案,因为我想你必须试着自己去做,如果你有问题或疑问,来这里告诉我们。但是,我能告诉你的是你可以用
insert
语句使用另一个表中的数据创建新表,即:您也可以使用
overwrite
语句,如果希望删除该表(cars)中的所有现有数据。所以,手术将是
ctrmrzij2#
hive不是rdbms数据库,因此没有主键或外键的概念。但您可以在配置单元中添加自动递增列。请尝试:
erhoui1w3#
你可以采用这种方法。
一个cta(createtable as select)用你的例子这个cta可以工作
在配置单元上不能有主键或外键,因为在rbdms(如oracle或mysql)上不能有主键,因为配置单元是读模式,而不是像oracle那样写模式,所以不能在配置单元上实现任何类型的约束。