How to read csv file in node js

前端 未结 3 1582
星月不相逢
星月不相逢 2021-01-17 10:18

I am trying to read a csv file using node js. Her is my code

fs.readFile(config.csvUploadPath, function read(err, data) {
    if (err) {
        throw err;
         


        
相关标签:
3条回答
  • 2021-01-17 10:51

    From How to read data From *.CSV file using javascript?, use the jQuery-CSV library.

    Note: The library is designed to handle any CSV data that is RFC 4180 compliant, including all of the nasty edge cases that most 'simple' solutions overlook.

    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 snippet from jquery-csv's examples here.

    0 讨论(0)
  • 2021-01-17 11:10

    I used a stream, fs, and csv-parse like in this answer:

    const parse = require('csv-parse')
    const fs = require('fs') 
    
    const data = []
    fs.createReadStream(filename)
      .pipe(parse({ delimiter: ',' }))
      .on('data', (r) => {
        console.log(r);
        data.push(r);        
      })
      .on('end', () => {
        console.log(data);
      })
    
    0 讨论(0)
  • 2021-01-17 11:15

    Use a library, CSV has lots of gotchas. I have come to enjoy the package csv. It is located here: https://www.npmjs.com/package/csv . Here is a very quick example using the 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.
      })
    })
    

    Since your file does not have multiple values per row and contains no delimiters besides newline, it is only trivially CSV. Maybe String.prototype.split() is for you?

    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 讨论(0)
提交回复
热议问题