2013-12-15 9 views
2

약 10k 개의 레코드가있는 CSV 파일이 있습니다. 내 nodejs 애플 리케이션에서 하나씩 그것을 검색해야합니다.nodejs의 CSV 파일에서 데이터 가져 오기

사용자가 "X"버튼을 처음 클릭하면 비동기 요청이 CSV 파일의 첫 번째 행에서 데이터를 가져 오는 nodejs 앱으로 전송됩니다. 다시 클릭하면 두 번째 줄의 데이터가 표시되고 계속 진행됩니다.

나는 fast-csv와 lazy를 사용해 보았지만 모두 완전한 파일을 읽었다. 내가 tih를 달성 할 수있는 방법인가?

+0

그 – adeneo

+0

@adeneo의 [플러그인] (https://npmjs.org/package/line-by-line) ..는 외부 플러그인없이 그것을 할 수있는 방법이있다 그렇지? – casper123

답변

4

노드는 readline 모듈과 함께 제공됩니다.

var fs = require("fs"), 
    readline = require("readline"); 

var file = "something.csv"; 

var rl = readline.createInterface({ 
    input: fs.createReadStream(file), 
    output: null, 
    terminal: false 
}) 

rl.on("line", function(line) { 
    console.log("Got line: " + line); 
}); 

rl.on("close", function() { 
    console.log("All data processed."); 
}); 
+0

rl.on ("line")은 전체 파일을 한 줄씩 읽습니다. 클라이언트에서 요청을 받으면 각 줄을 읽어야합니다. – casper123

+0

HTTP 요청을 받으면 줄 단위로 파일을 읽거나 어떤 것? 네가하는 말을 놓치고있는 것 같아. 예를 들어 질문을 업데이트 할 때주의해야합니까? –

0

도미닉 타르 (dominic tarr) 모듈이 '분할 (split)'한다고 생각합니다. 스트림별로 줄을 구분합니다. 당신이 온라인으로 읽을 수있는 스트림 라인을 처리 할 수 ​​있도록 핵심 년대에 https://npmjs.org/package/split

fs.createReadStream(file) 
    .pipe(split()) 
    .on('data', function (line) { 
     //each chunk now is a seperate line! 
    }) 
관련 문제