我有一个用于跟踪的红移表,因此它非常庞大。我需要在应用一些文本操作并从另一列中提取值后更新一列。
我设法编写的查询仅适用于一行。
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;
如何让它适用于表格中的每一行。
答案 0 :(得分:2)
UPDATE
schema.table_name
SET
data_id = SPLIT_PART(REGEXP_SUBSTR(data_column, 'pattern=[^&]*'),'=',2)::BIGINT;
答案 1 :(得分:0)
只是不要将WHERE id = 1620;
放在更新查询的末尾。
答案 2 :(得分:0)
Redshift中的更新效率不高。如果你有一个庞大的表,并且你打算更新每一行,你应该将数据(带有更新的列)复制到一个新表,然后翻转它们。