2017-12-14 8 views
1

현재 노드 앱에서 원격 csv 제품 피드를 구문 분석하고 있으며이를 수행하기 위해 Papa Parse를 사용하고 싶습니다 (과거 브라우저에서 성공 했으므로).Nodejs/Papa Parse를 사용하여 원격 CSV 파일을 구문 분석 하시겠습니까?

파파 구문 분석 Github에서 : https://github.com/mholt/PapaParse

내 최초의 시도 및 웹 검색이 완료 될 정확히 켜져하지 않았습니다. Papa 추가 정보에 따르면 Papa Parse는 이제 Node와 호환 가능하며 Baby Parse (일부 노드 분석 기능을 제공하는 데 사용됨)가 가치 저하되었습니다. https://github.com/mholt/PapaParse#papa-parse-for-node

대신 파일의 읽기 가능한 스트림을 구문 분석 할 수있는 노드의 파파 구문 분석처럼 보이는 문서의 단락에서 :

다음은 앞으로이 문제에 비틀 거리는 사람을위한 문서의 노드 부분에 대한 링크입니다. 내 질문은;

주제에 대한 검색 사람들을 위해 이 기능은 여기에 설명 된 구문 분석하는 원격 파일을 사용하려고 (그리고 비슷한 질문을 반복하지 않도록하기 위해) 미래의 가시성에 대한

Is there any way to utilize Readable Streams functionality to use Papa to download/parse a remote CSV in Node some what similar to how Papa in the browser uses XMLHttpRequest to accomplish that same goal?

: http://papaparse.com/docs#remote-files는 콘솔에 다음과 같은 오류가 발생합니다 :

:

내가 근래 "처리되지 않은 거부 ReferenceError가 XMLHttpRequest를 정의하지 않습니다" e는 공식 저장소에서 문제를 열었으며 해결해야 할 문제에 대해 더 자세히 알기 때문에이 질문을 업데이트 할 것입니다.

답변

1

누구든지이 문제를 계속 조사 할 경우이 답변을 추가합니다 (진행 상황에 따라 업데이트됩니다).

이전 사용자가 파일을 다운로드 한 다음 처리 한 것처럼 보입니다. Papa Parse는 읽기 스트림을 처리 할 수 ​​있어야하며 'http'GET을 해당 스트림으로 파이프 할 수 있어야하므로이 작업이 필요하지 않습니다. https://forums.meteor.com/t/processing-large-csvs-in-meteor-js-with-papaparse/32705/4

참고 : 아기 구문 분석 위의이 설명에서, 지금 파파 구문 분석 작업을 여기

사람의 인스턴스 내가 그것을 구문 분석 한 후하려고 노력하고 파일을 다운로드로 다시 떨어지고있는 무슨 논의 노드 베이비 파스가 감가 상각되었습니다.

는 파일 다운로드

While downloading and then Parsing with Papa Parse is not an answer to my question, it is the only workaround I have as of now and someone else may want to use this methodology.

내 코드를 다운로드 한 다음 구문 분석하는 해결 방법은 현재이 같은 같습니다

// Papa Parse for parsing CSV Files 
var Papa = require('papaparse'); 
// HTTP and FS to enable Papa parse to download remote CSVs via node streams. 
var http = require('http'); 
var fs = require('fs'); 

var destinationFile = "yourdestination.csv"; 

var download = function(url, dest, cb) { 
    var file = fs.createWriteStream(dest); 
    var request = http.get(url, function(response) { 
    response.pipe(file); 
    file.on('finish', function() { 
     file.close(cb); // close() is async, call cb after close completes. 
    }); 
    }).on('error', function(err) { // Handle errors 
    fs.unlink(dest); // Delete the file async. (But we don't check the result) 
    if (cb) cb(err.message); 
    }); 
}; 

download(feedURL, destinationFile, parseMe); 

var parseMe = Papa.parse(destinationFile, { 
    header: true, 
    dynamicTyping: true, 
    step: function(row) { 
    console.log("Row:", row.data); 
    }, 
    complete: function() { 
    console.log("All done!"); 
    } 
}); 
0

확인을, 그래서 나는이에 대한 답을 가지고 생각합니다. 그러나 시간 만 말해 줄 것입니다. 내 파일은 탭 구분 기호가있는 .txt입니다.

var fs = require('fs'); 
var Papa = require('papaparse'); 
var file = './rawData/myfile.txt'; 
// When the file is a local file when need to convert to a file Obj. 
// This step may not be necissary when uploading via UI 
var content = fs.readFileSync(file, "utf8"); 

var rows; 
Papa.parse(content, { 
    header: false, 
    delimiter: "\t", 
    complete: function(results) { 
     //console.log("Finished:", results.data); 
    rows = results.data; 
    } 
});