본문 바로가기

Database

[ oracle ] 대량의 데이터 UPDATE 하기

* 리스트 데이터를 UPDATE 해야할 때 사용 하는 쿼리이다.

1. (선 작업) 수정이 필요한 TABLE의 키 값과 수정해야할 값을 TEMP 테이블에 INSERT 한다. ( 엑셀로 IMPORT)

2. 아래 쿼리처럼 SET 구문에서 한 건만 나올수 있도록 JOIN을 사용해야한다. (난 이부분에 JOIN을 사용하지 않아서 쿼리 오류가 발생했었음.)

UPDATE SCOTT.PEOPLE A
SET  =  ( SELECT COL_DAT_VAL3
              FROM  SCOTT.TEMP B
              WHERE SYS_RGTR_ID='250206002_9633' 
              AND A.ID = B.COL_DAT_VAL1
              AND A.NM = B.COL_DAT_VAL2
            )
    ,SYS_MDFR_ID = '250206002_9633'
    ,SYS_MDFCN_DT=SYSDATE
WHERE ( ID, NM ) IN
                      (
                          SELECT  COL_DAT_VAL1 AS ID
                                  ,COL_DAT_VAL2 AS NM
                          FROM  SCOTT.TEMP 
                          WHERE SYS_RGTR_ID='250206002_9633'
                      );