Node.js 如何在node js中读取csv文件

Node.js 如何在node js中读取csv文件,node.js,csv,express,meanjs,fs,Node.js,Csv,Express,Meanjs,Fs,我正在尝试使用node js读取csv文件。 她是我的密码 fs.readFile(config.csvUploadPath, function read(err, data) { if (err) { throw err; } console.log(data + 'my data') }); 控制台: ID D11 D33 D55 这里我想获取列ID中的元素并将它们存储在数组中。我该怎么做?谁能建议我帮忙吗。谢谢 我的控制器: var partne

我正在尝试使用node js读取csv文件。 她是我的密码

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

ID
D11
D33
D55
这里我想获取列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){

使用库,CSV有很多陷阱。我是来享受这个软件包的
csv
。它位于以下位置:。下面是一个使用异步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.
  })
})
由于您的文件每行不包含多个值,并且除了换行符之外不包含任何分隔符,所以它只是一个微不足道的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', ... ]
})
从中,使用jQuery CSV库

注意:该库设计用于处理任何符合RFC 4180的CSV数据,包括大多数“简单”解决方案忽略的所有令人讨厌的边缘情况

var fs=require('fs');
var$=jQuery=require('jQuery');
$.csv=require('jquery-csv');
var sample='./path/to/data/sample.csv';
fs.readFile(示例'UTF-8',函数(err,csv){
$.csv.toArray(csv,{},函数(err,data){

对于(var i=0,len=data.length;i我使用了一个流、
fs
csv parse
,如:


可能的重复项这实际上是一个CSV文件,还是一个包含ID列表的文件?这在没有库的情况下很容易解析,但如果要解析真正的CSV,则一定要使用一个!我选择的模块是:Hi.Ballsey i只有一个列名ID,并且希望将其所有值存储在一个数组中。这不是真正的CSV,而是我它只是一个每行都有数据的文件。您可以使用
data.split('\n')
[。它将返回一个像您所希望的数组。CSV文件通常每行有多个值,因此它返回一个数组…每行一个。例如
行=['id'],['D11'],['D33'],['D55']]
。请注意,标题也已解析,要索引其中一个值,您需要使用类似于
行[1][0]的内容
。有一些关于标题处理的选项,库可以帮助您将值填充到具有与列名匹配的属性的每一行的对象中。TFM位于此处:但我得到的错误是“data.split不是一个函数”,我认为
readFile
总是将字符串作为数据传递,但显然只有在您指定时才会这样做一个编码。示例已更新!我通过以下方式获得它…dataArray=data.toString().split(/\r?\n/);
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
    }
  });
});
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);
  })