C# 데이터 합칠때 방법론.. 문의..

현재 제가 하려는 작업은 엑셀을 읽어서 엑셀에 있는 키값으로 디비를 조회후 디비에 있는 자료를 엑셀에 빈칸을 채워주는 작업입니다.

현재 스파이어를 이용하여 작업을 하려고 하고 있는데 어떻게 할까 생각하다가 궁금해서 문의드립니다.
여러가지 방법중에 어떤것이 좀더 빠른 작업을 할까 하는 궁금증입니다.

  1. 엑셀을 읽어서 자료를 DataTable에 넣고 DB를 읽어서 DataTable에 넣은 후에 for문을 통해 키값 매칭후 엑셀쪽 DataTable에 자료 입력후 엑셀 엑스포트 하기
  2. 엑셀을 읽어서 임시테이블에 자료 인서트 , DB를 읽어서 자료를 또다른 임시테이블에 인서트 그후 두개 조인하여 셀렉트 한다음에 엑셀에 엑스포트 하기

일단 생각나는건 두가지인대 쿼리로 처리하는것이 빠를까 프로그램 내에서 처리하는것이 빠를까 하는 갑자기 궁금증이 생겼습니다. 건이 현재는 몇백건 안되서 속도차가 크지 않을 수 있지만 나중에 더 늘어나면 어떻게 될까 하기도 하고
그냥 갑자기 궁금하여 문의 드립니다…

저라면 2번이요~

좀더 세부적으로는 "엑셀 값을 임시테이블에 넣고 JOIN한 결과를 가져와 처리"로 할 것 같아요.
(DB 값을 읽어서 임시테이블에 넣는 것은 안해도 되지 않나 싶어서요)

좋아요 2

데이터라길래 평범한 데이터인 줄 알았더니 엑셀 데이터였군요… ㄷㄷ

엑셀에 있는 데이터를 메모리에 올릴 수 있는 크기인지 먼저 살펴봐야 할 것 같고 조인할거니 좀 더 여유로워야 할 것 같아요.
그러나 방식을 물으신거라면 저 역시도 2번이 좋아보이지만 저라면 엑셀 데이터를 올리지 않고 하나의 row만 읽어서 처리하는 방식을 택할 것 같습니다.
엑셀 쪽 라이브러리가 좀 노가다가 심한 편이긴 한데요, 그래도 이 방법이 가장 메모리 부담이 없고 처리속도도 무난할 것 같아요.

좋아요 1

역시 저두 사실 2번째방법으로 하려다가 저게 더 날수도 있으려나 하는 생각 이긴 했습니다.
답변 감사합니다. 걍 엑셀은 임시테이블에 넣고 쿼리에 조인해서 바로 처리하는 방식으로 하였네요~

좋아요 2

아하 다음번에는 이방법도 한번 고려해봐야겠습니다. 이번에는 그냥 쿼리에 임시테이블을 조인해서 사용하는 방법으로 처리했습니다. 답변 감사합니다.

좋아요 1