使用node.js,目的是将此模块作为AWS Lambda函数运行。在S3中读取和解析CSV文件而无需下载整个文件
使用s3.getObject()
从aws-sdk
,我能够成功从亚马逊S3获取一个非常大的CSV文件。目的是读取文件中的每一行,并用每行的主体发出一个事件。
在我能找到的所有示例中,它看起来像S3中的整个CSV文件必须被缓冲或流式传输,转换为字符串,然后逐行读取。
s3.getObject(params, function(err, data) {
var body = data.Body.toString('utf-8');
}
由于源CSV文件的大小,此操作需要很长时间。另外,CSV行的长度也不相同,我不确定是否可以使用缓冲区大小作为选项。
问题
有没有办法来拿起node.js中的S3文件和读/逐行改造它,从而避免了第一字符串化整个文件在内存中?
理想情况下,我宁愿使用fast-csv
和/或node-csv
的更好功能,而不是手动循环。
工程魅力。流赢了! – changingrainbows