2016-04-18 25 views
0

2つのハイブテーブルがあります。ハイブ1つのテーブルから別のテーブルへの上書きの挿入

ソース表が列を次のようしています

correspondence_id  | decimal(22,0) |   | 
| template_id    | decimal(18,0) |   | 
| language_cd    | varchar(6)  |   | 
| delivery_channel_cd  | varchar(20) |   | 
| job_id     | decimal(18,0) |   | 
| correspondence_content | string   |   | 
| create_user_id   | varchar(40) |   | 
| create_ts    | timestamp  |   | 
| last_updt_user_id  | varchar(40) |   | 
| last_updt_ts   | timestamp  |   | 
| data_src_id    | decimal(18,0) |   | 
| src_app_resource_cd  | varchar(50) 

先は次の列があります。データを転送するために、次のクエリを使用して

correspondence_id  | decimal(22,0)   |      | 
| template_id    | decimal(18,0)   |      | 
| template_cd    | varchar(20)   |      | 
| template_type_cd   | varchar(40)   |      | 
| category_cd    | varchar(20)   |      | 
| language_cd    | varchar(6)   |      | 
| delivery_channel_cd  | varchar(20)   |      | 
| job_id     | decimal(18,0)   |      | 
| correspondence_content | string    |      | 
| create_user_id   | varchar(40)   |      | 
| create_ts    | timestamp    |      | 
| last_updt_user_id  | varchar(40)   |      | 
| last_updt_ts    | timestamp    |      | 
| data_src_id    | decimal(18,0)   |      | 
| src_app_resource_cd  | varchar(50)   |      | 
| part_create_year_num  | int     |      | 
| part_create_month_num | int     |      | 
|       | NULL     | NULL     | 
| # Partition Information | NULL     | NULL     | 
| # col_name    | data_type    | comment    | 
|       | NULL     | NULL     | 
| part_create_year_num  | int     |      | 
| part_create_month_num | int  

イム:

FROM source_table cc insert overwrite table 
destination_table partition 
(part_create_year_num=2016, part_create_month_num=9) 
select cc.correspondence_id, cc.template_id, cc.language_cd, cc.delivery_channel_cd, cc.job_id, 
cc.correspondence_content, cc.create_user_id, cc.create_ts, cc.last_updt_user_id, cc.last_updt_ts, 
cc.data_src_id, cc.src_app_resource_cd 

しかし、私は実行しますこのクエリは次のエラーが表示されます

rror: Error while compiling statement: FAILED: SemanticException [Error 10044]: Line 1:79 Cannot insert into target table because column number/types are different '9': Table insclause-0 has 15 columns, but query has 12 columns. (state=42000,code=10044) 
org.apache.hive.service.cli.HiveSQLException: Error while compiling statement: FAILED: SemanticException [Error 10044]: Line 1:79 Cannot insert into target table because column number/types are different '9': Table insclause-0 has 15 columns, but query has 12 columns. 

明らかにソーステーブルとデスティネーションテーブルは異なりますが、このクエリを機能させるにはどうすればよいですか、プレースホルダの値を入れてみましたが、 | 1 template_cd:

+0

てみであるべきINT、 ''、 ''、 '0' source_tablesから –

答えて

1

先の表は、余分な5つの余分な列

ノーマル列を持っているようですvarchar(20)| 2 template_type_cd | varchar(40)| | 3 category_cd | varchar(20)| |

パーティション列 4. part_create_year_num | int | | 5. part_create_month_num |

クエリを選択cc.correspondence_id、cc.template_idのようなクエリでヌルを置くことによってdestのテーブルの列数と一致するように

Insert overwrite table Destination_table partition(part_create_year_num=2016, part_create_month_num=9) select 
correspondence_id,   
template_id,  
'' as template_cd,  
'' as template_type_cd, 
'' as category_cd,  
language_cd,  
delivery_channel_cd, 
job_id, 
correspondence_content, 
create_user_id, 
create_ts, 
last_updt_user_id, 
last_updt_ts, 
data_src_id, 
src_app_resource_cd 
from source_table 
関連する問題