2014-10-30 87 views
0

我有一個用於跟蹤的紅移表,因此它非常龐大。我需要在應用一些文本操作並從另一列提取值後更新一列。使用其他列的修改數據更新紅移列值

我設法寫入的查詢僅適用於一行。

UPDATE schema.table_name SET data_id = (SELECT split_part(regexp_substr(data_column,'pattern=[^&]*'),'=',2)::BIGINT FROM schema.table_name where id = 1620) WHERE id = 1620; 

如何讓它在表中的每一行都能正常工作。

回答

2
UPDATE 
    schema.table_name 
SET 
    data_id = SPLIT_PART(REGEXP_SUBSTR(data_column, 'pattern=[^&]*'),'=',2)::BIGINT; 
0

只是不要把WHERE id = 1620;更新查詢結束。

0

更新在Redshift中效率不高。如果你有一個巨大的表,並且你打算更新每一行,你應該將數據(帶有更新的列)複製到一個新表中,然後將它們翻轉。

+0

它爲我工作。而且速度很快。爲了記錄,該表格非常龐大,其中有100萬條記錄被更新。我曾經在幾處地方看過,紅移的更新「過於緩慢」,因此我猶豫不決。但它的工作。 – 2014-10-30 18:40:07