如何读取节点js中的csv文件

MMR*_*MMR 9 csv fs node.js express meanjs

我试图使用节点js读取csv文件.她是我的代码

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

安慰:

ID
D11
D33
D55
Run Code Online (Sandbox Code Playgroud)

在这里,我想获取列ID中的元素并将它们存储在数组中.我怎样才能做到这一点?谁能建议我帮忙.谢谢.我的控制器:

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){
Run Code Online (Sandbox Code Playgroud)

tro*_*ers 18

使用图书馆,CSV有很多陷阱.我来享受这个包裹csv.它位于:https://www.npmjs.com/package/csv.这是使用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.
  })
})
Run Code Online (Sandbox Code Playgroud)

由于您的文件每行没有多个值,并且除了换行符之外不包含分隔符,因此它只是简单的CSV.也许String.prototype.split()是给你的?

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', ... ]
})
Run Code Online (Sandbox Code Playgroud)


eha*_*nom 10

我在这个答案中使用了一个流,fscsv-parse一样:

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);
  })
Run Code Online (Sandbox Code Playgroud)