2017-03-11 16 views
1

可以說我有下面的數據表:如何實現蜂巢更新的舊版本

Col1 Col2 Col3 
Dipak More 123 
Sachin Patil 123 
Pradip More 999 

我想在Col3 更新Dipak222值,從而蜂巢不會允許您可以更新這些文件。因此,我們如何在配置單元中實現

+0

閱讀:http://stackoverflow.com/a/37744071/2700344 – leftjoin

回答

0

如果您使用的是舊版本的配置單元,則只能使用插入覆蓋表語句重新加載數據。

如果你想使用UPDATE或DELETE語句,你可以使用蜂巢0.14或更高版本。

+0

能否請您詳細解釋如何將覆蓋在蜂巢 – Dipak

+0

工作在你的情況,如果您更新使用插入覆蓋語句,可以寫如下。插入重寫表YourTable作爲 選擇COL1,COL2,如果來自YourTable(COL1 = '迪帕克',222,COL3) ; –

+0

謝謝,它的工作對我來說 – Dipak

0

在任何情況下,你必須重建整個數據集。

我會建議使用CTAS(CREATE TABLE AS選擇)以創建表與所請求的數據,然後重命名錶。
這樣你就必須回滾如果事情出錯的能力。

create table mytable_tmp 
as 
select Col1 
     ,Col2 
     ,case when Col1 = 'Dipak' then 222 else Col3 end 

from mytable 
; 

alter table mytable rename to mytable_bck_20170311 
; 

alter table mytable_tmp rename to mytable 
; 

您可以一次做到這一點,但請記住,如果出現問題,在你的查詢中輸入錯誤 - 你的數據不見了。

insert overwrite table mytable 

select Col1 
     ,Col2 
     ,case when Col1 = 'Dipak' then 222 else Col3 end 

from mytable