我正在尝试使用配置单元查询用现有表创建一个新表。
在创建一个新表时,我想添加一个新列并为所有行插入当前时间戳。例如:
正在退出表:
|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;
但是如果要用旧值复制并创建新表,我想在创建表的过程中添加新列并插入值。
请帮忙。
3条答案
按热度按时间g6ll5ycj1#
你可以开一个
hive one-shot command
就为了一个Hive。当您需要运行多个查询执行或运行需要较长时间执行的较大查询时,此实用程序非常有用。
创建
myquery.hql
包含由分隔的所有查询的文件;
然后从hdfs运行nohup hive -f /myquery.hql
您可以通过访问nohup.out文件继续查看控制台:tail -f nohup.out
wtzytmuj2#
可以这样添加新列:
nr9pn0ug3#
如果需要使用与现有表完全相同的结构定义一个新表,那么hive使创建新表变得非常容易。这称为克隆表,它是使用like子句完成的。新表将具有与现有表相同的列定义和其他属性,但没有数据。语法是
通过在CREATETABLE…like语句中包含适当的子句,可以为新表指定一些表属性。例如,可以使用location和stored as子句。如果需要更改其他属性,请在创建表后使用ALTERTABLE来设置这些属性。
之后,如果需要添加更多的列,可以使用ALTERTABLE语句。
可以使用add columns将一个或多个列添加到列列表的末尾,常规语法为
您可以将这些句子 Package 在jdbc语句中。
我希望这有帮助。