提问人:ValkyrieOnAPegasus 提问时间:6/8/2023 更新时间:6/8/2023 访问量:31
为什么我的 CSV 文件上的 from_line 和 to from csv-parse 没有读取预期的行数?
Why is from_line and to from csv-parse on my CSV file not reading the expected amount of rows?
问:
我正在尝试读取一个如此大的 .csv 文件,以至于将其全部保存在一个变量中会超出内存。因此,我想一次只处理 .csv 文件的一部分。我正在阅读 CSV 解析选项,发现它从请求的行号开始,它将处理请求的记录数。我想如果我设置了一次要处理多少条记录,我可以从第一条记录开始,然后添加已处理的行数,这样下一个循环的开始将从第一个未处理的行开始,依此类推。from_line
to
但是,当我运行代码时,实际读取的行数不是我设置的行数,并且每个循环中处理的行数是不同的。有时它只有 3 行。有时只处理 63 行。两者都小于我设置的行数。此外,所有行的总和与 中的内容不匹配。CSV 文件。有时它更多(是任何记录的两倍),有时它更少(记录的一半),具体取决于我设置的内容。有人能看到为什么我没有得到正确的行数吗?to
to
to
import { parse } from 'csv-parse';
function main(){
let dataList = [{}];
let startLine = 2
const numRows = 500;
while( dataList.length != 0){
const data = await this.getCSVData(startLine, numRows);
//function to process the rows
dataList = data;
startLine += numRows;
}
}
async function readCSVFile(filePath: string, fromLine, toLine): Promise<object[]> {
const results: object[] = [];
const parseOptions = {from_line: fromLine, to: toLine}
return new Promise((resolve, reject) => {
fs.createReadStream(filePath)
.pipe(parse(parseOptions))
.on('data', (data) => {
results.push(data)
})
.on('end', () => resolve(results))
.on('error', (error) => reject(error));
});
}
async function getCSVData(startLine, numRows){
try{
return await this.readCSVFile("fileName.csv", startLine, numRows);
}
catch(error) {
console.error(error);
};
}
答: 暂无答案
评论