はじめに
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
に格納しています。