2014-10-30 2 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

그것은 나를 위해 일했습니다. 그리고 그것은 빨랐다. 기록을 위해, 테이블은 거대하고, 그 중 백만 레코드가 업데이트되었습니다. 나는 두 곳에서 레드 쉬프트의 업데이트가 "매우 느리다"는 것을 읽었으며 결과적으로 나는 주저했다. 그러나 효과가있었습니다. –

관련 문제