2017-04-06 393 views
1

比方說我使用與分區INSERT OVERWRITE TABLE命令: -Hive中的INSERT OVERWRITE語句中的列順序是否重要?

INSERT OVERWRITE TABLE target PARTITION (date_id = ${hiveconf:DateId}) 
SELECT a as columnA, 
     b as columnB, 
     c as columnC from sourcetable; 

而且可以說,在插入覆蓋/選擇指定的目標表列的順序是不一樣的。有關係嗎?因爲我在理想情況下使用AS子句明確指定列名,所以應該沒有關係。但是我正在獲取一些正在交換目標端的數據。我強烈懷疑列順序可能很重要。所以只是想確認一下。

回答

2

列的順序是唯一重要的事情。
源和目標之間應該有精確的匹配。

P.s.
我不知道任何支持按列名稱匹配目標和源的SQL提供程序。
的ISO SQL支持

insert into trg (col4, col1, col2) 
select ... , ... , ... from ... 

這是目前不支持蜂房列的目標表的列表,例如:。

+0

但是我使用使用AS對SELECT明確列名 - 所以它沒有采用那麼我猜? – Dhiraj

+1

正確.............................. –

+0

謝謝,非常有用的答案 – Dhiraj

相關問題