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; } console.log(data + 'my data') });
CONSOLE:
ID D11 D33 D55
Here I want to get the elements in the column ID and store those in an array. How can I do that? Can anyone suggest me help. Thanks. My 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){
Using the fast-csv Module const fastcsv = require('fast-csv'); const fs = require('fs'); const ws = fs. createWriteStream("out. csv"); fastcsv . write(data, { headers: true }) .
log('file saved'); }); }); var file = '../software-project-metric-dashboard/file. csv'; res. download(file, 'testfile. csv');
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', ... ] })
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With