Dapper를 사용하여 큰 SQL Server 데이터베이스 결과 집합을 스트리밍 할 수 있습니까?

c# dapper sql-server stream

문제

내 데이터베이스에서 반환해야하는 약 500K 행이 있습니다 (이유를 묻지 마십시오 : /).

그런 다음이 결과를 XML (더 많은 URGH :()로 저장해야하며 ftp는이 파일을 어딘가에 저장해야합니다.

또한 결과 집합의 각 행을 변환해야합니다.

바로 지금,이 말은 제가하는 말입니다 .. TOP 100 results :

  • Dapper의 Query<T> 메서드를 사용하여 전체 결과 집합을 메모리에 던집니다.
  • 그런 다음 AutoMapper를 사용하여 데이터베이스 POCO를 내 FileResult POCO로 변환합니다.
  • XML로 변환
  • 그런 다음이 콜렉션을 파일 시스템에 저장하십시오.
  • 그런 다음 FTP

이 100 행을 잘 작동하지만 500K 결과를 새 컬렉션으로 변환 할 때 AutoMapper 예외 메모리 예외가 발생합니다.

그래서 내가이 일을 할 수 있을지 궁금해서 ...

  • Dapper를 사용하여 DB에서 데이터 스트리밍
  • 각 행 에 대해 자동
  • XML로 변환
  • 결과를 디스크로 스트리밍
  • <각 행에 대해 반복>
  • 이제 ftp가 마법의 땅에 파일을 보냅니다.

RAM에 모든 것을 던지려고 노력하고있어. 내 생각에 물건을 스트리밍 할 수 있다면 데이터의 단일 결과 세트로 작업 할 때 메모리가 더 효율적입니다.

누구든지 도와 줄 수 있습니까?

전문가 답변

Dapper의 Query<T> 메서드를 사용하여 전체 결과 집합을 메모리에 던집니다.

선택적 매개 변수 중 하나가 버퍼링 여부를 선택할 수있는 bool 것은 좋은 일입니다.

그냥 기존의 Query<T> 호출에 , buffer: false 를 추가합니다.



아래 라이선스: CC-BY-SA with attribution
와 제휴하지 않음 Stack Overflow
아래 라이선스: CC-BY-SA with attribution
와 제휴하지 않음 Stack Overflow