본문

Oracle 데이터 치환

반응형

Oracle 데이터 치환


수정해야할 데이터가 많을 경우, 아래와 같이 데이터 치환을 사용한다.


- TABLE_A의 BALANCE 데이터 치환


<TABLE_A>


1. 수정할 balance 데이터를 담은 TABLE_A_TEMP 테이블을 생성 (ID, BALANCE2)

excel에 필드명, 필드데이터 기재 후 DB tool에서 제공하는 Import 기능을 사용한다.

<TABLE_A_TEMP>


2. 데이터 치환

ex)

1
2
3
4
UPDATE TABLE_A
SET TABLE_A.치환될_필드 = NVL((SELECT DISTINCT MAX(TABLE_A_TEMP.치환할_데이터) FROM TABLE_A_TEMP
                            WHERE TABLE_A.필드A = TABLE_A_TEMP.필드B), TABLE_A.치환될_필드)
WHERE TABLE_A.조건필드 = 조건데이터;


sample)

1
2
3
4
UPDATE TABLE_A
SET TABLE_A.balance = NVL((SELECT DISTINCT MAX(TABLE_A_TEMP.balance2) FROM TABLE_A_TEMP
                            WHERE TABLE_A.id = TABLE_A_TEMP.id), TABLE_A.balance)
WHERE TABLE_A.contract_id = 125258;


3. 치환 결과 확인

<TABLE_A>



다중 필드 치환

UPDATE TABLE_A
SET TABLE_A.balance = NVL((SELECT DISTINCT MAX(TABLE_A_TEMP.value1) FROM TABLE_A_TEMP
                            WHERE TABLE_A.id = TABLE_A_TEMP.id), TABLE_A.balance),
TABLE_A.name = NVL((SELECT DISTINCT MAX(TABLE_A_TEMP.value2FROM TABLE_A_TEMP
                            WHERE TABLE_A.id = TABLE_A_TEMP.id), TABLE_A.name),
TABLE_A.address = NVL((SELECT DISTINCT MAX(TABLE_A_TEMP.value3) FROM TABLE_A_TEMP
                            WHERE TABLE_A.id = TABLE_A_TEMP.id), TABLE_A.address)

WHERE
 TABLE_A.contract_id = 125258;



P.S. 

- NVL(Null Value)

조건에 만족하지 않는 필드가 NULL로 갱신되는것을 방지


Ex) NVL(value, 1) 

- value가 null 일경우 1을 반환, 그렇지 않을경우 value값을 반환




반응형

공유

댓글