使用来自其他列的已修改数据更新redshift列值

时间:2014-10-30 07:26:05

标签: sql postgresql amazon-redshift

我有一个用于跟踪的红移表,因此它非常庞大。我需要在应用一些文本操作并从另一列中提取值后更新一列。

我设法编写的查询仅适用于一行。

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;

如何让它适用于表格中的每一行。

3 个答案:

答案 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中的更新效率不高。如果你有一个庞大的表,并且你打算更新每一行,你应该将数据(带有更新的列)复制到一个新表,然后翻转它们。