📜  如何在 nodejs 中读取 csv 文件 - Javascript (1)

📅  最后修改于: 2023-12-03 15:24:18.102000             🧑  作者: Mango

如何在 Node.js 中读取 CSV 文件

CSV 文件是一种常见的数据格式,在 Node.js 中读取 CSV 文件的方式也有很多种。在本文中,我们将介绍三种不同的方法,分别是使用 Node.js 内置的 fs 模块、使用第三方库 csv-parser 和 papaparse。

1. 使用 fs 模块

Node.js 内置的 fs 模块可以用于读取文件,也包括 CSV 文件。我们可以使用 fs 模块的 readFileSync 方法同步读取 CSV 文件,并通过 split 方法将文件内容按行分割,再通过 split 方法将每一行的内容按逗号分割。

const fs = require('fs');

const file = fs.readFileSync('data.csv', 'utf-8');
const rows = file.split('\n');
const headers = rows.shift().split(',');
const result = rows.map(row => {
  const values = row.split(',');
  return headers.reduce((object, header, index) => {
    object[header] = values[index];
    return object;
  }, {});
});

console.log(result);

以上代码将读取 data.csv 文件并打印出结果。需要注意的是,由于读取文件是同步操作,建议使用异步版本的读取方法 readFile,以免阻塞程序。

2. 使用 csv-parser

csv-parser 是一个第三方库,可以用于解析 CSV 文件,并将结果转换为 JSON 格式。我们可以使用 npm 安装 csv-parser,然后通过 createReadStream 方法读取文件,再将结果通过 on 方法传给 csv-parser 实例。

const csv = require('csv-parser');
const fs = require('fs');

const results = [];
fs.createReadStream('data.csv')
  .pipe(csv())
  .on('data', data => results.push(data))
  .on('end', () => {
    console.log(results);
  });

以上代码将读取 data.csv 文件并打印出结果。需要注意的是,csv-parser 默认使用第一行作为表头,所以如果 CSV 文件没有表头,需要通过 options 参数传递 header: false。

3. 使用 papaparse

papaparse 是另一个第三方库,也可以用于解析 CSV 文件。我们可以使用 npm 安装 papaparse,然后通过 parse 方法读取文件,再将结果交给回调函数处理。

const Papa = require('papaparse');
const fs = require('fs');

fs.readFile('data.csv', 'utf-8', (err, file) => {
  const results = Papa.parse(file, { header: true });
  console.log(results.data);
});

以上代码将读取 data.csv 文件并打印出结果。需要注意的是,papaparse 也可以接受流式输入,具体可以参见官方文档。

以上是三种在 Node.js 中读取 CSV 文件的方法,每种方法都有其特点,可以根据实际情况选择适合自己的方式。