2
0

Node.jsでCSVファイルを読み込む方法

Posted at

はじめに

Node.jsでCSVファイルを読み込む実装をしたので、備忘録として記事にしたいと思います。
TypeScriptで実装しているので、Node.js + TypeScriptで、CSV読み込みを実装したい方の参考になれば幸いです。

必要なパッケージをインストール

csv-parseを使うので、以下をターミナルで実行してください。

npm install csv-parse

Node.jsでCSVファイルを読み込むパッケージはいくつかあるそうです。
気になる方は以下をご参照ください。

CSVを作成

ts_demo         // プロジェクトのルート
 ├ dist         // コンパイルしたjsファイルを格納
 ├ src          // tsファイルを格納
 ├ package.json // package.json
 └ users.csv    // 読み込むCSV

CSVは上記の位置に追加します(フォルダ構成は一部省略してます)
CSVの内容は下記です。

id,name,age,created_at
0001,John,18,2023/10/22 11:00:00
0002,Mike,23,2023/12/25 13:00:00
0003,Kevin,34,2024/1/22 11:00:00
0004,Ronald,42,2023/8/1 23:00:00
0005,Jake,36,2023/9/22 17:00:00
0006,Alice,54,2023/10/22 11:00:00

コード

import * as fs from "fs";
import { parse } from 'csv-parse/sync';

class User {
    id: string;
    name: string;
    age: number;
    createdAt: Date;

    constructor(id: string, name: string, age: number, createdAt: Date){
        this.id = id;
        this.name = name;
        this.age = age;
        this.createdAt = createdAt;
    }
}

const users: User[] = [];

function readCsv() {
  const data = fs.readFileSync('users.csv');
  const records = parse(data, {
    //  BOM付きの場合はtrueにする
    bom: true,
    // ヘッダを無視したいので、2行目から読み込む
    from: 2,
  });
  for (const record of records) {
      const id = record[0];
      const name = record[1];
      const age = Number(record[2]);
      const createdAt = new Date(record[3]);

      const user = new User(
        id,
        name,
        age,
        createdAt,
      );
      users.push(user);
  }
}

readCsv();
console.log(users);

おわりに

今回のコードは下記のリポジトリのimport_csv.tsに格納しています。

2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0