몇 기가 바이트 텍스트 파일로 작업 중이며 PowerShell을 사용하여 스트림 처리를 수행하고 싶습니다. 각 줄을 구문 분석하고 일부 데이터를 추출한 다음 데이터베이스에 저장하는 간단한 작업입니다.
불행히도 get-content | %{ whatever($_) }
파이프의이 단계에서 전체 라인 세트를 메모리에 유지하는 것으로 보입니다. 또한 놀랍도록 느려 실제로 모든 것을 읽는 데 매우 오랜 시간이 걸립니다.
그래서 제 질문은 두 부분입니다.
- 전체를 메모리에 버퍼링하지 않고 줄 단위로 스트림을 처리하려면 어떻게해야합니까? 이 목적을 위해 몇 기가의 RAM을 사용하는 것을 피하고 싶습니다.
- 더 빨리 실행하려면 어떻게해야합니까? 을 반복하는 PowerShell
get-content
은 C # 스크립트보다 100 배 느립니다.
-LineBufferSize
매개 변수를 놓친 것 같은 멍청한 일이 있기를 바랍니다 .
get-content
높이 려면 -ReadCount를 512로 설정하십시오.이 시점에서 Foreach의 $ _는 문자열 배열이됩니다.