Javascript 如何在使用csv解析器解析csv后获得输出?
我正在使用csvparser解析一个巨大的csv(1.2GB),并试图从解析的csv中获取某些列数据。我试图在处理后将数据推送到数组,但只得到空数组作为输出。如何修复此代码Javascript 如何在使用csv解析器解析csv后获得输出?,javascript,node.js,stream,output,node-csv-parse,Javascript,Node.js,Stream,Output,Node Csv Parse,我正在使用csvparser解析一个巨大的csv(1.2GB),并试图从解析的csv中获取某些列数据。我试图在处理后将数据推送到数组,但只得到空数组作为输出。如何修复此代码 var parse = require('csv-parse'); var output = [] var parser = parse({ delimiter: '\t', columns: true }, function(err, csvLine) { for (var l = 0; l <
var parse = require('csv-parse');
var output = []
var parser = parse({
delimiter: '\t',
columns: true
}, function(err, csvLine) {
for (var l = 0; l < csvLine.length; l++) {
output.push(csvLine[l].id)
}
});
console.log(output)
fs.createReadStream('file.csv', {
encoding: 'utf8'
}).pipe(parser);
var parse=require('csv-parse');
变量输出=[]
var parser=parse({
分隔符:'\t',
专栏:对
},函数(err,csvLine){
对于(var l=0;l
console.log(output)
上的输出总是一个空数组。请帮我解决这个问题
我试着理解这里的帖子-。但是我无法理解和修复代码。因为异步。行控制台.log(输出)在解析器变量声明之后运行。此时,输出变量中没有值 当从csv读取所有数据时,必须在循环后访问输出变量,如下所示
var parse=require('csv-parse');
var fs=需要('fs');
变量输出=[]
var parser=parse({
分隔符:',',
专栏:对
},函数(err,csvLine){
对于(var l=0;l
因为异步。行console.log(输出)在解析器变量声明之后运行。此时,输出变量中没有值
当从csv读取所有数据时,必须在循环后访问输出变量,如下所示
var parse=require('csv-parse');
var fs=需要('fs');
变量输出=[]
var parser=parse({
分隔符:',',
专栏:对
},函数(err,csvLine){
对于(var l=0;l
使用fast csv
将文件解析为ReadableStream
,然后使用异步迭代(用于wait
)逐行处理。更简单
const csv = require("fast-csv")
let myList=[];
const csvStream = csv.fromPath(filename);
for await(const row of csvStream) {
myList.push(row[1]); // get the second column
}
使用
fast csv
将文件解析为ReadableStream
,然后使用异步迭代(用于wait
)逐行处理它。更简单
const csv = require("fast-csv")
let myList=[];
const csvStream = csv.fromPath(filename);
for await(const row of csvStream) {
myList.push(row[1]); // get the second column
}
这看起来是异步的。尝试将
console.log(output)
移动到函数(err,csvLine){}
中,移动到for
看似异步的循环之后。尝试将console.log(output)
移动到函数(err,csvLine){}
的循环之后,谢谢@mukesh。这起作用了。console.log()应始终处于函数级别。我们读多个文件时也是这样吗?谢谢@mukesh。这起作用了。console.log()应始终处于函数级别。当我们读取多个文件时也是这样吗?