みなさんこんにちは、現役エンジニアのサメハックです
未経験からWebエンジニアに転職し、
正社員として5年働いたのちフリーランスとして独立しました。
Node.jsの解説シリーズです。
今回はcsv-parserを使ってCSVファイルを読み込む方法について学んでいきましょう!
駆け出しエンジニアや未経験の方、
また新入社員を指導する先輩社員にとっても
わかりやすいように解説していきます!
この記事を読むと・・・
- Node.jsでCSVが読み込める
- csv-parserの使い方がわかる
本記事ではTypeScriptで記述するよ!
ヘッダーを自前で用意する

ライブラリをインストール
npm install csv-parser iconv-lite
iconv-liteは日本語対応不要の場合いらないよ!
サンプルコード
import * as fs from "fs";
import * as csv from "csv-parser";
import * as iconv from "iconv-lite";
const getCsv = async () => {
// 読み込んだCSVを代入する
const csvResults = [];
// 自前のヘッダー設定
const HEADERS = ["PARAM0", "PARAM1", "PARAM2", "PARAM3"];
// 非同期で読み込み
return new Promise((resolve, reject) => {
fs.createReadStream("sample.csv").pipe(
.pipe(iconv.decodeStream('Shift_JIS')) // 日本語対応
.pipe( csv({
// 自作したヘッダーを設定
headers: HEADERS,
// 値を一部変換
mapValues: ({ header, index, value }) => {
// スペースとダブルクオーテーションを削除
value.replace(/\s+/g, "").replace(/"/g, "");
},
})
.on("data", (data) => {
// データ読み込み処理
csvResults.push(data);
})
.on("end", () => {
// 全データの読み込みが完了
resolve(csvResults);
})
.on("error", (error) => {
// エラー発生時の処理
reject(error);
})
)
);
});
};
// awaitをつけるのを忘れない!
const csvData = await getCsv();
CSVファイルの1行目をヘッダーとする

ライブラリをインストール
npm install csv-parser iconv-lite
サンプルコード
import * as fs from "fs";
import * as csv from "csv-parser";
import * as iconv from "iconv-lite";
const getCsv = async () => {
// 読み込んだCSVを代入する
const csvResults = [];
// 非同期で読み込み
return new Promise((resolve, reject) => {
fs.createReadStream("sample.csv").pipe(iconv.decodeStream('Shift_JIS')
.pipe(
csv({
// 自作したヘッダーを設定
headers: HEADERS,
// 値を一部変換
mapValues: ({ header, index, value }) => {
// スペースとダブルクオーテーションを削除
value.replace(/\s+/g, "").replace(/"/g, "");
},
})
.on("data", (data) => {
/* 空行をスキップする処理を実装 */
// カラムがnullのものをカウント
let blankCounter = 0;
// key名を取得
const keys = Object.keys(data);
// 各カラムの値がnullかどうかを確認
for (let key of keys) {
// データがnullならカウンターを+1
if(!data[key]) blankCounter++;
}
// 全てのカラムがnullの場合、空行であるためスキップ
if( blankCounter == keys.length) return
// データを追加
csvResults.push(data);
})
.on("end", () => {
// 全データの読み込みが完了
resolve(csvResults);
})
.on("error", (error) => {
// エラー発生時の処理
reject(error);
})
);
});
};
// awaitをつけるのを忘れない!
const csvData = await getCsv();
まとめ

- csv-parserを使うとCSVファイルの読み込みができる
- ヘッダーを自作するか、CSVファイル上で管理するかによって処理が変わる

満足いただけたら、1クリックなのでSNSフォローしてもらえると嬉しいです🦈