2017-01-21 4 views
6

Ich versuche, eine CSV-Datei mit Knoten js zu lesen. Her ist mein CodeWie CSV-Datei in Knoten lesen js

fs.readFile(config.csvUploadPath, function read(err, data) { 
    if (err) { 
     throw err; 
    } 
    console.log(data + 'my data') 
}); 

KONSOLE:

ID 
D11 
D33 
D55 

Hier möchte ich die Elemente in der Spalte ID erhalten und diejenigen, die in einem Array zu speichern. Wie kann ich das machen? Kann mir jemand helfen? Vielen Dank. Mein Controller:

var partnersModel = new partners(params); 
     fs.readFile(config.csvUploadPath, function read(err, data) { 
      if (err) { 
       throw err; 
      } 
     dataArray = data.toString().split(/\r?\n/); 
      dataArray.forEach(function(v,i){ 
       if(v !== 'DUI'){ 
        partnersModel.dui.push(v); 
       } 
      }); 
     }); 
     partnersModel.save(function(error, response){ 
+1

http://stackoverflow.com/questions/23080413/nodejs-reading-csv-file –

+0

Mögliche Duplikat [NodeJS Lesen CSV-Datei] (http://stackoverflow.com/questions/23080413/nodejs-reading-csv -file) – crowchirp

+0

Ist das tatsächlich eine CSV-Datei oder nur eine Datei mit einer Liste von IDs? Dies wäre ohne eine Bibliothek sehr einfach zu analysieren, aber wenn Sie echte CSV-Dateien analysieren, verwenden Sie unbedingt eine! Mein Modul der Wahl ist: https://www.npmjs.com/package/csv –

Antwort

9

eine Bibliothek verwenden, hat CSV viele gotchas. Ich bin gekommen, um das Paket csv zu genießen. Es befindet sich hier: https://www.npmjs.com/package/csv. Hier ist ein sehr schnelles Beispiel mit der async API.

const fs = require('fs') 
var parse = require('csv-parse') 
fs.readFile(inputPath, function (err, fileData) { 
    parse(fileData, {columns: false, trim: true}, function(err, rows) { 
    // Your CSV data is in an array of arrys passed to this callback as rows. 
    }) 
}) 

Da Ihre Datei pro Zeile mehrere Werte haben nicht und enthält keine Trennzeichen außer Newline, ist es nur trivialer CSV. Vielleicht ist String.prototype.split() für Sie?

const fs = require('fs') 
fs.readFile(inputPath, 'utf8', function (err, data) { 
    var dataArray = data.split(/\r?\n/); //Be careful if you are in a \r\n world... 
    // Your array contains ['ID', 'D11', ... ] 
}) 
+0

Danke, von Ihrem Code, was bekomme ich als out setzen? – MMR

+0

Zeilen = ['11', '33, '34'] ....? – MMR

+0

CSV-Dateien weisen in der Regel mehrere Werte pro Zeile auf, sodass sie ein Array mit Arrays zurückgeben ... eines für jede Zeile. Für Ihr Beispiel 'rows = [['id'], ['D11'], ['D33'], ['D55']]'. Beachten Sie, dass die Kopfzeile ebenfalls analysiert wurde und dass Sie zum Indizieren eines der Werte etwas wie 'rows [1] [0]' verwenden müssen. –

0

Von How to read data From *.CSV file using javascript?, verwenden Sie die jQuery-CSV-Bibliothek.

Hinweis: Die Bibliothek ist für die Verarbeitung beliebiger CSV-Daten geeignet, die RFC 4180-konform sind, einschließlich aller unangenehmen Randfälle, die von den meisten "einfachen" Lösungen übersehen werden.

var fs = require('fs'); 
var $ = jQuery = require('jquery'); 
$.csv = require('jquery-csv'); 

var sample = './path/to/data/sample.csv'; 
fs.readFile(sample, 'UTF-8', function(err, csv) { 
    $.csv.toArrays(csv, {}, function(err, data) { 
    for(var i=0, len=data.length; i<len; i++) { 
     console.log(data[i]); //Will print every csv line as a newline 
    } 
    }); 
}); 

Code-Schnipsel aus jquery-csv ‚s Beispiele here.