ノード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
を楽しむようになりました。ここにあります: https://www.npmjs.com/package/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', ... ]
})
_
From javascriptを使用して* .CSVファイルからデータを読み取る方法 で、jQuery-CSVライブラリを使用します。
注:このライブラリは、RFC 4180に準拠したCSVデータを処理するように設計されています。これには、ほとんどの「単純な」ソリューションでは見落とされる厄介なEdgeケースがすべて含まれます。
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
}
});
});
jquery-csv
の例のコードスニペット here 。
この回答 のように、ストリームfs
、およびcsv-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);
})