Node.jsでCSVファイルを読み込む
何度も苦しんでいるので自分用のメモです。
SJISのCSVファイルを読み込んで、UTF-8の形式で書き出します。
relax_column_countのオプションは、CSVファイルのカラム数をチェックしないときに設定します。
import iconv from 'iconv-lite';
import { parse, transform } from 'csv';
import * as fs from 'fs';
const rs = fs.createReadStream("input.csv");
const ws = fs.createWriteStream("output.csv");
rs.pipe(iconv.decodeStream('SJIS'))
.pipe(iconv.encodeStream('UTF-8'))
.pipe(parse({
relax_column_count: true
}))
.pipe(transform((row) => {
/* 行ごとの処理 */
}));
rs.on("close", () => resolve())