从配置单元中的现有表创建新表

nbysray5  于 2021-06-24  发布在  Hive
关注(0)|答案(3)|浏览(354)

我正在尝试使用配置单元查询用现有表创建一个新表。
在创建一个新表时,我想添加一个新列并为所有行插入当前时间戳。例如:
正在退出表:

|user_id|user_name|user_address|
|1001   |userName |address     |

新建表:

|user_id|user_name|user_address|creation_date|
|1001   |userName |address     | 123421342134|

我正在尝试使用jdbctemplate执行这个查询。
我尝试过:

Create table newTable Select * from existingtable;

但是如果要用旧值复制并创建新表,我想在创建表的过程中添加新列并插入值。
请帮忙。

g6ll5ycj

g6ll5ycj1#

你可以开一个 hive one-shot command 就为了一个Hive。
当您需要运行多个查询执行或运行需要较长时间执行的较大查询时,此实用程序非常有用。
创建 myquery.hql 包含由分隔的所有查询的文件 ; 然后从hdfs运行 nohup hive -f /myquery.hql 您可以通过访问nohup.out文件继续查看控制台: tail -f nohup.out

wtzytmuj

wtzytmuj2#

可以这样添加新列:

create table newTable AS
select s.*, unix_timestamp(current_timestamp) as creation_date 
  from existingtable s;
nr9pn0ug

nr9pn0ug3#

如果需要使用与现有表完全相同的结构定义一个新表,那么hive使创建新表变得非常容易。这称为克隆表,它是使用like子句完成的。新表将具有与现有表相同的列定义和其他属性,但没有数据。语法是

CREATE TABLE new_table_name LIKE existing_table_name;

CREATE TABLE jobs_archived LIKE jobs;

通过在CREATETABLE…like语句中包含适当的子句,可以为新表指定一些表属性。例如,可以使用location和stored as子句。如果需要更改其他属性,请在创建表后使用ALTERTABLE来设置这些属性。
之后,如果需要添加更多的列,可以使用ALTERTABLE语句。
可以使用add columns将一个或多个列添加到列列表的末尾,常规语法为

ALTER TABLE tablename ADD COLUMNS (col1 TYPE1,col2 TYPE2,… );

ALTER TABLE employees ADD COLUMNS (bonus INT);

您可以将这些句子 Package 在jdbc语句中。
我希望这有帮助。

相关问题