Я загрузил большой CSV-файл со значениями питательных веществ для пищевого продукта для API, который я хотел создать, размер файла + 300 МБ и более 6 миллионов строк. Структура CSV-файла следующая:
"id","fdc_id","nutrient_id","amount","data_points","derivation_id","min","max","median","footnote","min_year_acquired"
"3639112","344604","1089","0","","75","","","","",""
"3639113","344604","1110","0","","75","","","","",""
... 6M more of these
Это то, что я пробовал, безуспешно. Если я ограничу длину данных разумным числом и остановлюсь раньше, это сработает, но, конечно, мне нужно разобрать весь файл в JSON. Я также попытался использовать пакет csv-parser
NPM и передать поток чтения, но также безуспешно. Как мне go об этом?
const fs = require('fs');
const readline = require('readline');
(async () => {
const readStream = fs.createReadStream('food_nutrient.csv');
const rl = readline.createInterface({
input: readStream,
crlfDelay: Infinity
});
let data = [], titles;
for await (const line of rl) {
const row = line.split(',').map(s=>s.replace(/\W/g, '').trim());
if (!titles) {
titles = row;
continue;
}
data.push(Object.fromEntries(titles.map((t, i) => [t, +row[i]||0])));
}
// never getting here in this lifetime
debugger;
console.log('Done!');
})();