1. 非分區表:
復制表結構: create table new_table as select * from exists_table where 1=0;
復制表結構和數據: create table new_table as select * from exists_table;
2. 分區表:

-- 創建一個分區表 drop table if exists kimbo_test; create table kimbo_test ( order_id int, system_flag string ) PARTITIONED BY(dt string ) ROW FORMAT DELIMITED FIELDS TERMINATED BY '\001' LINES TERMINATED BY '\n' STORED AS TEXTFILE ; -- 插入數據 insert overwrite table kimbo_test partition(dt='20170601') values (186000983,'A'),(286000983,'B') ; insert overwrite table kimbo_test partition(dt='20170602') values (386000983,'F'),(486000983,'W') ; create table test_par like kimbo_test; -- 用 as select 復制一個新表 create table test_par2 as select * from kimbo_test where dt='20170601' limit 0; -- 用 like 復制一個新表 create table test_par3 like kimbo_test; -- 注意差異: as select 復制的是一個非分區表, like 復制的是一個分區表。
表結構截圖:
3. 將原表的數據復制到 新表(test_par3)
1. 創建新表: create table test_par3 like kimbo_test;
2. 將HDFS的數據文件復制一份到新表目錄,hive cmd模式下: dfs -cp -f /user/hive/warehouse/kimbo_test/* /user/hive/warehouse/test_par3/
3. 修復分區元數據信息,hive cmd模式下: MSCK REPAIR TABLE test_par3;
結果查詢: