새벽코딩

[Oracle] SQL Update 반복문 본문

DB 모델링 & SQL

[Oracle] SQL Update 반복문

J 코딩 2022. 1. 4. 23:03
반응형

오늘 회사에서 대용량 데이터들에 대해서 수정을 해야하는 일이 생겼다.

 

수백개의 데이터를 하나씩 수정하기에는 너무 귀찮았기 때문에

PL/SQL을 이용해서 UPATE문을 반복해서 사용해볼 생각이었다.

 

TEST001 테이블에는 연도, 차수, 대분류코드, 중분류코드, 소분류코드, 일련번호, 조직코드등등 많은 컬럼이 존재한다.

이때 일련번호 컬럼의 값이  0으로 저장되어있는 행의 조직코드를 전부 변경해줘야했었다.

행의 개수가 수백개 이상이기 때문에 일일이 바꿔주기에는 시간이 많이 걸리고 정확도가 떨어질 수 있다는 생각을 했다.

 

이 데이터의 값을 한번에 바꿔주기위해서 먼저 해당 테이블의 데이터값이 어떻게 저장되어있는지 패턴(?)을 생각해보았다. 결과는 생각보다 간단했는데 일련번호 컬럼의 값이 0인 행의 조직코드는 일련번호 컬럼의 값이 1인 행의 조직코드값과 정확히 동일하다는 결론이 나왔다.

 

해서, TEST001테이블에서 일련번호 컬럼이 1인 데이터들만 뽑아와 루프를 태웠고 해당 조직코드 값으로 일련번호가 0인 행의 조직코드를 수정해주었다.

 

대용량 데이터를 수정하기위해서 만약 일정한 패턴이 존재한다면 이런 방법도 꽤 쓸만한 방법이라고 생각한다.

 

또한 해당 쿼리는 다양한 방법으로 응용이 가능하기에 두고두고 유용하게 사용해볼 생각이다.

 

 

 

PL/SQL이 성공적으로 수행되었습니다.

 

프로시저의 개념을 천천히 복습해보며 공부를 이어나가야겠다.

 

 

 

반응형
Comments