复制临时hive表的结构到新表,并添加额外的表属性



我想复制满载temp表的结构,并添加添加表属性,如partitioned by (partition_col), Format='ORC'

Temp表:

Create table if not exists tmp.temp_table( id int,
name string,
datestr string )

temp表创建成功

最终表:

CREATE TABLE IF NOT EXISTS tmp.{final_table_name} (
LIKE tmp.temp_table
)
WITH (
FORMAT = 'ORC'  
partitioned by('datestr')
)

但是我得到的错误是"错误:编译语句时出错:FAILED: ParseException行1:63缺少EOF在'WITH'附近'temp_table' (state=42000,code=40000)">

实现此功能的任何解决方案。

您不应该使用like,而应该使用create table as (CTAS)select * from mytab where 1=2

CREATE TABLE IF NOT EXISTS tmp.{final_table_name} 
As select * from tmp.temp_table where 1=2
WITH (
FORMAT = 'ORC'  
partitioned by('datestr')
)

Like将创建一个定义完全相同的空表。CTAS将使用相同的列序列、数据类型/长度、sql和您的定义来创建新的空表,因为我们使用1=2。

最新更新