NGMsoftware

NGMsoftware
로그인 회원가입
  • 매뉴얼
  • 학습
  • 매뉴얼

    학습


    Database PostgreSQL에서 Bulk Insert와 Conflict Update 사용하는 방법. (포스트그리에서 벌크 인서트와 중복…

    페이지 정보

    본문

    안녕하세요. 엔지엠소프트웨어입니다. PostgreSQL(포스트그리 데이타베이스)에서 대량의 데이타를 Insert(인서트)할 때 퍼포먼스(Performance, 성능) 개선을 위해 벌크 인서트(Bulk Insert)를 사용합니다. 이 때 이미 만들어진 쿼리(Query)문은 아래와 같을겁니다.

    RS0HH8C.png

     

     

    보통 이 쿼리를 만들 때 아래와 같이 반복하면서 처리할겁니다.

    8GD8uoC.png

     

     

    이 때 이미 등록된 사용자라면 정보를 갱신하고, 신규 사용자는 추가해야 합니다. 아래 쿼리는 중복된 사용자라면 추가하지 않도록 처리하고 있습니다.

    ZeLD9TO.png

     

     

    on conflict ... do update를 사용하면 중복된 데이타를 특정 컬럼만 업데이트할 수 있습니다.

    KETEfJ9.png

     

     

    일반적으로 update set 이후 데이타는 C#의 경우 직접 내용을 넣을 수 있는데요. 벌크 인서트와 같은 환경에서는 이게 불가능합니다. 사용자마다 데이타가 다르기 때문이죠. 그래서, PostgreSQL에서 제공하는 upsert(update, insert 합성어)를 사용해서 처리해야 합니다. EXCLUDED는 삽입하려는 항목이 포함된 가상 테이블을 의미합니다. 이 테이블의 데이타로 업데이트할 수 있습니다.

     

    개발자에게 후원하기

    MGtdv7r.png

     

    추천, 구독, 홍보 꼭~ 부탁드립니다.

    여러분의 후원이 빠른 귀농을 가능하게 해줍니다~ 답답한 도시를 벗어나 귀농하고 싶은 개발자~

    감사합니다~

    • 네이버 공유하기
    • 페이스북 공유하기
    • 트위터 공유하기
    • 카카오스토리 공유하기
    추천0 비추천0

    댓글목록

    등록된 댓글이 없습니다.