이 모듈을 AWS 람다 함수로 실행하려는 목적으로 node.js를 사용합니다.전체 파일을 다운로드하지 않고 S3의 CSV 파일을 읽고 구문 분석
aws-sdk
에서 s3.getObject()
을 사용하면 Amazon S3에서 매우 큰 CSV 파일을 성공적으로 선택할 수 있습니다. 의도는 파일의 각 행을 읽고 각 행의 본문으로 이벤트를 방출하는 것입니다.
모든 예에서 S3의 전체 CSV 파일을 버퍼링하거나 스트리밍하고 문자열로 변환 한 다음 한 줄씩 읽어야합니다.
s3.getObject(params, function(err, data) {
var body = data.Body.toString('utf-8');
}
원본 CSV 파일의 크기가 주어지면이 작업을 수행하는 데 시간이 오래 걸릴 수 있습니다. 또한 CSV 행의 길이가 다양하기 때문에 버퍼 크기를 옵션으로 사용할 수 있는지 여부는 확실하지 않습니다.
질문
먼저 메모리에 전체 파일을 stringifying 피한다 라인 선으로 그것을 변환/Node.js를에서 S3 파일을 선택하고 읽을 수있는 방법이 있나요?
이상적으로는 수동으로 반복하는 대신 fast-csv
및/또는 node-csv
의 더 나은 기능을 사용하는 것이 가장 좋습니다.
매력이 있습니다. 스트림 우승! – changingrainbows