【问题标题】:Node CSV Parser that streams asynchronously, reads line by line and has the ability to pause and resume stream [closed]异步流式传输的节点 CSV 解析器,逐行读取并能够暂停和恢复流 [关闭]
【发布时间】:2015-05-08 22:18:21
【问题描述】:

我正在尝试寻找一个 CSV Parser 库或一个流转换库和 CSV Parser 的组合,它可以让我根据请求(暂停和恢复)取行。我发现了一些逐行读取流的示例,但是这些示例通常处理纯文本而不是 CSV 格式,因此除了自己编写 CSV 解析器之外,我无法确定这些示例的正确操作过程。

对此的需求以我正在创建的伪缓冲区的形式出现,我需要在其中以滚动方式发送数据和接收回调数据。例如,如果我逐行提取 100 条 csv 数据记录并通过 HTTP 请求发送,我希望能够暂停传入的记录流,直到 100 条记录之一返回回调数据,然后我想取消暂停流,并且只拉取一条记录,替换收到回调的记录。

这有点令人费解,所以如果我需要更好地解释,请告诉我。

【问题讨论】:

    标签: javascript node.js parsing csv fs


    【解决方案1】:

    csv 模块可以做到这一点。他们的examples page 有一个简单的异步示例,其中包含您可以用作起点的流:

    var csv = require('csv');
    
    var generator = csv.generate({seed: 1, columns: 2, length: 20});
    var parser = csv.parse();
    var transformer = csv.transform(function(data){
      return data.map(function(value){return value.toUpperCase()});
    });
    var stringifier = csv.stringify();
    
    generator.on('readable', function(){
      while(data = generator.read()){
        parser.write(data);
      }
    });
    
    parser.on('readable', function(){
      while(data = parser.read()){
        transformer.write(data);
      }
    });
    
    transformer.on('readable', function(){
      while(data = transformer.read()){
        stringifier.write(data);
      }
    });
    
    stringifier.on('readable', function(){
      while(data = stringifier.read()){
        process.stdout.write(data);
      }
    });
    

    【讨论】:

      猜你喜欢
      • 2021-06-12
      • 1970-01-01
      • 2022-10-06
      • 1970-01-01
      • 2015-01-02
      • 2019-07-18
      • 2021-06-05
      • 1970-01-01
      • 2011-09-25
      相关资源
      最近更新 更多