Reputation: 3616
I have 2 hive tables which have the exact same schema, except for a date column. One of them has the date column, which is what its partitioned by and the other does not have a date column and is not partitioned by anything.
the 2 tables are:
staging (no date column and not partitioned)
main (date column present and is partitioned by date)
I want to copy over data from staging to main. I am trying this query
INSERT OVERWRITE TABLE main
PARTITION (dt='2019-04-30')
SELECT col_a,
col_b,
col_c,
col_d,
col_e,
'2019-04-30' FROM staging
Both staging and main tables have col_a, col_b, col_c, col_d and col_e. dt is the field which only the main table has. But this throws this error:
main requires that the data to be inserted have the same number of columns as the target table: target table has 6 column(s) but the inserted data has 7 column(s), including 1 partition column(s) having constant value(s).;'
Any idea how I can fix this ?
Upvotes: 1
Views: 926
Reputation: 1
Look this,
target table has 6 column(s) but the inserted data has 7 column(s),
including 1 partition column(s) having constant value(s).;'
It said, you your table has 6 columns but insert has 7 columns,
please check your target table , show create table staging
, if or not has the correct column numbers.
This often happends after the table structure is not successfuly modified.
Upvotes: 0
Reputation: 3616
Well, turns out all I had to do was this -
INSERT OVERWRITE TABLE main
PARTITION (dt='2019-04-30')
SELECT * FROM staging
Upvotes: 2