2014-12-08 11 views
0

파일에서 많은 양의 데이터를 데이터베이스 테이블로 매일로드해야합니다. 데이터는 ERP 시스템 외부에 있으며 5,000,000 개의 레코드가 있으며 최대 500MB의 csv 파일로 전달됩니다. 이 작업과 변환, 데이터 확인 및 다른 시스템으로 가져 오기를 담당하는 통합 서비스 작업이 이미 있습니다. 단일 ID 열이 없다는 것을 잊었습니다. 그렇지 않으면 쉬울 것입니다. (3 ~ 7 개의 id 열) ERP 시스템은 마지막 실행 이후 변경된 데이터 만 제공 할 수도 없습니다.db 테이블과 함께 csv 파일 병합

문제는 CSV 파일의 병합을 데이터 테이블로 개선하는 것입니다. 테이블은 이전 실행의 전체 데이터를 항상 유지해야합니다.

나쁜 성능을 통해이 가져 오기를 갱신해야합니다. 다음과 같은 솔루션은 검증되었습니다

  • TSQL-병합 : 정말 나쁜 성능, 수입은
  • 사용자 지정 DTS 작업을 너무 오래해야합니다 나는 새 업데이트 또는 삭제되는 기록을 알 필요가있다. db 테이블과 csv를로드하는 것만으로 OutOfMemoryException이 던졌습니다.
  • 통합 서비스 외부의 파일을 이전 파일과 비교하고 델타 만 가져옵니다. 그것은 좋은 해결책이지만 실제로는 파일이 이전로드와 다르기 때문에 많은 오류가 있습니다.

이제 문제는 누구나 그러한 요구 사항을 경험 한 것입니까? 아무도이 문제를 해결할 좋은 제안을 가지고 있습니까?

감사합니다.

MH

+0

당신은 CSV 파일의 파일 형식에 명확한 패턴이 없다는 것을 의미합니다. 당신은 항상 다른 열을 얻는다는 것을 의미합니다. 확신 할 수는 없지만 몇 가지 이유로 OutOfMemoryException을 얻을 수 있습니다. 그냥 Google과 체크. 얼마나 많은 테이블 이 과정에서 사용하고 있습니까? – KumarHarsh

+0

교체 할 테이블 레코드를 삭제할 수 있습니까? datetime 열을 사용하여 테이블 레코드를 삭제 한 다음 모두 가져 오기 만 할 수 있습니까? –

+0

@KumarHarsh :이 문제는 OutOfMemoryException이 아니며 두 데이터 세트의 레코드로 인해 발생합니다. – MH2106

답변

0

나는 아직 구현을 시작하지 않은,하지만 난 통합 서비스 담당자와 이야기 한 후, 그것은 임시 테이블과 표정까지로이 문제를 해결하는 가장 좋은 솔루션입니다. 먼저 TSQL-Task로 임시 테이블을 만들고 일반 복사 작업으로 파일의 레코드를 삽입해야합니다. 찾아보기에서 삽입 또는 업데이트인지 결정합니다.

다음 2 주 동안 구현에 대해 작업 할 예정이므로 주저하지 말고 자세한 내용을 알아보십시오.