CSV 파일을 파싱하여 DB에 넣을때.. 0 3 1,555

by kinstole [Oracle 기초] [2018.11.20 15:16:14]


안녕하세요. 성능과 관련하여 궁금한점이 있어서 문의드립니다....

CSV 파일을 읽어 DB에 데이터를 넣는 배치를 만든다고 했을때.. 

CSV파일에는 기존 테이블에 존재하는 데이터가 항상 중복으로 들어있어 (대략 CSV파일의 반이 중복 데이터) 적재 시 비교를 한뒤 처리를 해줘야 합니다.

CSV 파일은 약 100만건, DB 테이블 데이터는 1000만건정도 있습니다... 매일 배치를 돌려야 해요..

제가 생각하는 방법은 2가지 방법이 있는데.. 둘중 어느것이 나을까요????..

1. Merge into 방법으로 처리하는 방법

 모든 로우의 데이터를 select 비교한 뒤 update 또는 insert 하는 방법

2. Temp table을 이용하는 방법 

 1) temp 테이블 데이터 truncate

 2) temp 테이블에 CSV 파일 insert

 3) temp 테이블과 원본 테이블 조인하여 원본 테이블의 중복 데이터 삭제

 4) temp 테이블 데이터 원본 테이블에 insert 하는 방식

by 우리집아찌 [2018.11.20 15:27:20]

중복이라면 merge 문에서 update 할 필요가 없겠죠.. 그냥 insert만 하시면 됩니다.


by kinstole [2018.11.20 15:35:44]

아 csv 파일에 들어있는 데이터는 PK가 같지만 나머지가 다른 신규 데이터입니다.. pk가 같으면 update 다르면 insert가 필요해요..


by 마농 [2018.11.20 15:43:27]

두가지 방법을 짬뽕하세요.
1. 임시테이블에 밀어 넣은 뒤
2. 임시테이블을 이용한 머지문 실행

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입