使用papa解析从远程csv文件中获取头文件

时间:2016-08-17 15:46:48

标签: javascript csv papaparse

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

我目前的方法如下:

Papa parse有一个流式传输数据并单独查看每一行的方法,这很好,我可以使用parser.abort()来终止流,以防止它在第一行之后继续进行,这看起来如下: / p>

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

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

有更有效的方法吗?我可以阻止papa解析下载整个文件吗?

我尝试过使用

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

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

2 个答案:

答案 0 :(得分:3)

我提出的解决方案与我原来的问题非常相似,不同之处在于我中止,完成并清除了记忆。

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

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

    }
});

答案 1 :(得分:0)

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

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

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

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