2014-10-29 16 views
6

in questo momento sto provando con la libreria fast-csv fare questo:come importare un file csv in mysql usando 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"); 
    }); 

Ma getta questo errore: "intestazione di colonna non corrispondente previsto: 2 colonne ottenuto: 57"

Sai come posso evitarlo? dovrei usare una libreria/approccio diverso

Un altro problema che sto affrontando è che ottengo il risultato in esadecimale ... come posso analizzarlo correttamente?

+0

Rimuovere la proprietà 'headers' dal secondo argomento. Quel CSV ha chiaramente 57 colonne e hai fornito solo le intestazioni per due di esse. – idbehold

risposta

4

È possibile utilizzare il modulo nodo 'csv-parse'.

  1. leggere il file csv utilizzando modulo nodo 'fs'
  2. passare i dati csv parser e si otterrà Arry di matrice, dove matrice interna rappresenta ogni riga.

Dai un'occhiata al seguente codice.

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

Qui filePath è il percorso del file csv e il delimitatore sarà come per il file. È il carattere che separa i campi nel file csv (può essere ',', '.', Ecc.).

+0

Hi Techxxx, questo approccio ha funzionato meglio, ma ora mi trovo di fronte a questo problema: tutto è esadecimale, come faresti a gestirlo? – Ced

+1

@Cedric Ci dispiace, ma non capisco il tuo problema. Se lo spieghi, allora posso provare ad aiutarti. –

Problemi correlati