Node.js   发布时间:2022-04-24  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了node.js – 在S3中读取和解析CSV文件而不下载整个文件大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
使用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的更好功能,而不是手动循环.

解决方法

您应该只能使用 createReadStream method并将其传输到fast-csv:

const s3Stream = s3.getObject(params).createReadStream()
require('fast-csv').fromStream(s3Stream)
  .on('data',(data) => {
    // do something here
  })

大佬总结

以上是大佬教程为你收集整理的node.js – 在S3中读取和解析CSV文件而不下载整个文件全部内容,希望文章能够帮你解决node.js – 在S3中读取和解析CSV文件而不下载整个文件所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。