들어오는 CSV 파일을 가져 와서 데이터베이스 테이블로 덤프하는 BizTalk 프로젝트가 있습니다. 가져 오기는 정상적으로 작동하지만 백만 개 이상의 행이있는 파일에서 약 200-300 개의 레코드 만 유지하면됩니다. 내 오케스트레이션은 이러한 행을 삭제하지만 가져 오는 플랫 파일은 여전히 250MB이며 일반 플랫 파일 파이프 라인을 사용하여 XML로 변환하면 처리하는 데 몇 시간이 걸리고 때때로 서버의 메모리가 부족해질 수 있습니다.BizTalk 2006의 매우 큰 CSV 파일에서 적은 수의 레코드 가져 오기
사용자 지정 파이프 라인 자체에서 걱정하지 않는 행을 삭제하도록 할 수있는 방법이 있습니까? 각 CSV 행의 첫 번째 항목은 몇 개의 문자열 중 하나이며 특정 문자열로 시작하는 행만 유지하려고합니다.
도움을 주셔서 감사합니다.
아직 CSV 일 때 전체 파일을 처리해도 괜찮습니다. XML로 변환 한 것 (그리고 내 오케스트레이션에 전달 된 XMLDocument 객체의 후속 구문 분석)이 문제를 일으키는 것 같습니다. 파이프 라인이 원하는 행만 포함하도록 트림 할 수 있다면 결과 XML 문서는 250MB-ish 대신 1MB 미만이됩니다. – SqlRyan
그러면 메모리에서 가능합니다. 정말 어렵지 않을 것이다. 구성 요소의 내용은 본문 스트림의 맨 위에 StreamReader를 만들고, 한 줄씩 읽고, 일치하지 않는 줄을 버리고, 두 번째 줄로 작성한 내용을 작성한 다음 해당 줄을 줄 아래로 전달하면됩니다. – tomasr