【问题标题】:Get just header from remote csv file using papa parse使用 papa parse 从远程 csv 文件中获取标头
【发布时间】:2016-08-17 15:46:47
【问题描述】:

我只需要从远程 csv 文件中提取标题。

我目前的方法如下:

Papa parse 有一种方法可以流式传输数据并单独查看每一行,这很棒,我可以使用 parser.abort() 终止流以防止它在第一行之后继续前进,如下所示:

Papa.parse(csv_file_and_path,{header:true, worker:true, 
    download: true,
    step: function(row, parser) 
    {
        //DO MY STUFF HERE
        parser.abort();
    }
});

这很好用,但因为我使用的是远程文件,它必须下载数据才能读取它。即使在解析第一行后代码将控制权释放回浏览器,但在解析找到第一行并为我提供所需信息后,下载仍会继续很长时间,尤其是对于下载可以持续很长时间的大文件在我得到我需要的东西之后的时间。

有没有更有效的方法来做到这一点?我可以阻止 papa parse 下载整个文件吗?

我尝试过使用

Papa.parse(csv_file,{header:true,
download: true,
preview:1,
complete: function(results){
    //DO MY STUFF HERE
}
});

但这做同样的事情,它下载整个文件,但与第一种方法一样,在解析第一行后将控制权交还给浏览器。

【问题讨论】:

    标签: javascript csv papaparse


    【解决方案1】:

    我提出的解决方案与我最初的问题非常相似,不同之处在于我中止、完成和清除内存。

    使用以下方法,只下载文件的单个块,大大减少了大文件的带宽开销,因为在第一行解析后不再继续下载。

    Papa.parse(csv_file,{header:true,
        download: true,
        step: function(results, parser) {
    
            //DO MY THING HERE
    
            parser.abort(); 
            results=null;   //Attempting to clear the results from memory
            delete results; //Attempting to clear the results from memory
    
        }, complete: function(results){
    
            results=null;   //Attempting to clear the results from memory
            delete results; //Attempting to clear the results from memory
    
        }
    });
    

    【讨论】:

      【解决方案2】:

      您可以使用 PapaParse 的预览选项:

       Papa.parse(..., {
                preview: 5, ...
      

      另请阅读:https://github.com/mholt/PapaParse/issues/47

      相关话题:Javascript using File.Reader() to read line by line

      【讨论】:

      • 预览方法不起作用,我应该之前提到过,因为它已经过测试,我会更新我的问题。预览似乎并没有阻止它下载整个文件,它应该这样做,但我已经测试过它并没有。
      • 它适用于我,也许我们使用不同的版本,尝试使用最新版本。对于我来说,它清楚地冻结了大型 CSV 文件的浏览器,但没有预览。另请注意,我使用 Firefox 进行了测试。
      • 是的,我今天自己测试了它,我发现它可以像我原来的方法一样释放浏览器,但它似乎并没有停止下载,下载在后台继续然后。您是否监控过网络使用情况以查看检索到的文件的大小?在我的情况下,它会在后台下载整个文件。
      • 我没有查网络,但既然你提到了,我一定会看看。
      • @SingleEntity 我实际使用了本地文件选择,这是另一个用例。
      猜你喜欢
      • 1970-01-01
      • 2018-05-29
      • 1970-01-01
      • 2022-09-27
      • 2018-04-01
      • 1970-01-01
      • 2018-09-20
      • 2021-11-13
      • 1970-01-01
      相关资源
      最近更新 更多