2014-10-29 3 views
6

는 지금은이 일을 라이브러리 빠르게 CSV으로 노력하고 있습니다 :node.js를 사용하여 mysql에 csv 파일을 가져 오는 방법은 무엇입니까?

var stream = fs.createReadStream("./google.csv"); 
    csv 
    .fromStream(stream, {headers : ["Name","E-mail 1 - Value"], ignoreEmpty: true}) 
    .on("data", function(data){ 
     console.log(data); 
    }) 
    .on("end", function(){ 
     console.log("done"); 
    }); 

을하지만이 오류가 발생합니다 : "열 머리글 불일치가 예상 : 2 열이있어 : 57"

당신은 알고 계십니까을 어떻게 피할 수 있습니까?

내가 직면 한 또 다른 문제는 16 진수로 결과를 얻는 것입니다 ... 어떻게 올바르게 구문 분석 할 수 있습니까?

+0

두 번째 인수에서 'headers' 속성을 제거하십시오. 해당 CSV에는 명확하게 57 개의 열이 있으며 두 개의 헤더 만 제공했습니다. – idbehold

답변

4

노드 모듈 'csv-parse'를 사용할 수 있습니다.

  1. 는 CSV 파서로 데이터를 전달하고 내부 배열의 각 행을 나타내는 배열이 배열의 노드를 얻는 것 "FS"모듈을 사용하여 CSV 파일을 읽는다.

다음 코드를 살펴보십시오.

var csvParser = require('csv-parse'); 

fs.readFile(filePath, { 
    encoding: 'utf-8' 
}, function(err, csvData) { 
    if (err) { 
    console.log(err); 
    } 

    csvParser(csvData, { 
    delimiter: ',' 
    }, function(err, data) { 
    if (err) { 
     console.log(err); 
    } else { 
     console.log(data); 
    } 
    }); 
}); 

여기서 filePath는 csv 파일의 경로이며 구분 기호는 파일 당입니다. csv 파일의 필드를 구분하는 문자입니다 (',', '.'등일 수 있음).

+0

안녕하세요 Techxxx,이 접근 방식은 더 잘 작동했지만 지금은이 문제에 직면하고 있습니다. 모든 것이 16 진수입니다. 어떻게 처리하겠습니까? – Ced

+1

@Cedric 죄송합니다. 귀하의 문제를 이해하지 못합니다. 설명해 주시면 제가 도와 드리겠습니다. –

관련 문제