【发布时间】:2017-02-13 03:32:07
【问题描述】:
使用 node.js,目的是将此模块作为 AWS Lambda 函数运行。
使用 aws-sdk 中的 s3.getObject(),我能够成功地从 Amazon 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 的更好功能,而不是手动循环。
【问题讨论】:
标签: node.js amazon-web-services amazon-s3 aws-sdk