2014-10-29 12 views
6

Teraz próbuję z biblioteką szybko CSV ten sposób:jak zaimportować plik csv do mysql przy użyciu pliku node.js?

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"); 
    }); 

Ale to generuje ten błąd: „nagłówek kolumny niedopasowanie oczekiwanego: 2 kolumny otrzymał: 57”

Znasz jak mogę tego uniknąć? powinienem użyć innej biblioteki/podejścia

Innym problemem, przed którym stoję, jest to, że otrzymuję wynik w postaci szesnastkowej ... w jaki sposób można go poprawnie przeanalizować?

+0

Usuń właściwość 'headers' z drugiego argumentu. Ten plik CSV ma wyraźnie 57 kolumn, a ty dostarczyłeś tylko nagłówki dla dwóch z nich. – idbehold

Odpowiedz

4

Możesz użyć modułu węzła "csv-parsowanie".

  1. odczytu pliku csv przy użyciu modułu Node „FS”
  2. przekazać dane do pliku CSV parsera, a dostaniesz arry z tablicy, gdzie wewnętrzna tablica reprezentuje każdy wiersz.

Proszę spojrzeć na poniższy kod.

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); 
    } 
    }); 
}); 

Tutaj filePath jest ścieżką pliku csv, a separator będzie zgodny z plikiem. Jest to znak, który oddziela pola w pliku csv (może być ",", ".", Itp.).

+0

Hi Techxxx, to podejście działało lepiej, ale teraz mam do czynienia z tym problemem: wszystko jest szesnastkowe, jak sobie z tym poradzisz? – Ced

+1

@Cedric Przepraszamy, ale nie rozumiem twojego problemu. Jeśli to wyjaśnisz, będę mógł ci pomóc. –

Powiązane problemy