-
Node.jsでCSVファイル操作
- 2016年9月29日
- CSV
- JavaScript
- Node.js
Node.jsでCSVファイルを読み書き
CSVファイルとJSON(Object)間の変換はnode-csvを使用することで簡単に行えます。前提
Node.jsがインストールされていること。モジュールの準備
次のコマンドでnode-csvを準備します。npm install csv
CSVからJSON(Object)への変換
CSV(ヘッダ行無)の変換
次の通りcsv-parserへファイルを入力することで、JSONに変換できます。 入力ファイルはこちら。CSV(ヘッダ行有)の変換
CSVファイルにヘッダ行がある場合、次のように{columns : true}
とすることで、ヘッダ行をJSONのキーとして使用できます。
入力ファイル(ヘッダ付)はこちら。
const filename = 'sample2.csv'; const parser = csv.parse({columns : true});読込結果(先頭のひとつ)は次のとおり。
{ '列1': '1101', '列2': '60', '列3': '600000', '列4': 'ホツカイドウ', '列5': 'サツポロシチユウオウク', '列6': 'イカニケイサイガナイバアイ', '列7': '北海道', '列8': '札幌市中央区', '列9': '以下に掲載がない場合', '列10': '0', '列11': '0', '列12': '0', '列13': '0', '列14': '0', '列15': '0' }
CSV(ヘッダ行有)を対応するキーを指定して変換
ヘッダ行が存在する場合、次のように{columns : ヘッダ行の解析関数}
とすることで、対応するJSONのキーを次のように変換することもできます。
入力ファイル(ヘッダ付)はこちら。
読込結果(先頭のひとつ)は次のとおり。
{ jis: '1101', postNumOld: '60', postNum: '600000', prefKana: 'ホツカイドウ', countryKana: 'サツポロシチユウオウク', townKana: 'イカニケイサイガナイバアイ', pref: '北海道', country: '札幌市中央区', town: '以下に掲載がない場合', etc1: '0', etc2: '0', etc3: '0', etc4: '0', etc5: '0', etc6: '0' }
CSV(utf-8以外)の変換
文字コード変換が必要ならIconvをpipeで繋げると簡単です。 入力ファイル(ヘッダ付、sjis)はこちら。const Iconv = require('iconv').Iconv; const iconv = new Iconv('sjis', 'utf-8//TRANSLIT//IGNORE'); readableStream.pipe(iconv).pipe(parser);
JSON(Object)からCSVへの変換
次の通りcsv-stringifyへ入力することで、CSVに変換できます。 CSV変換時のヘッダ付与はキーとヘッダの対応関係を用意してstringifyに指定するだけです。まとめ
以上のとおり、Node.jsではnode-csvを使用すると簡単にCSVとJSON間で変換できます。謝辞
入力ファイルの元データは郵便番号データを使用させていただきました。 郵便番号データダウンロードこの記事を書いた人 : 井上貴博
スタッフブログタグ:
AWS bluebird css CSV docker docker compose electron ES6 es2015 Git Heroku ITコンサルティング JavaScript justinmind less mongoDB Node.js php PostgreSQL Private Space Promise React react-router reactjs Salesforce scss Selenium Builder selenium IDE Selenium WebDriver stylus TypeScript VirtualBox VisualStudioCode vue vuejs webpack システム開発プロジェクト セキュリティ ワイヤーフレーム 上流工程 卒FIT 帳票 要件定義 設計 電力小売業界
一覧へ戻る
AWS bluebird css CSV docker docker compose electron ES6 es2015 Git Heroku ITコンサルティング JavaScript justinmind less mongoDB Node.js php PostgreSQL Private Space Promise React react-router reactjs Salesforce scss Selenium Builder selenium IDE Selenium WebDriver stylus TypeScript VirtualBox VisualStudioCode vue vuejs webpack システム開発プロジェクト セキュリティ ワイヤーフレーム 上流工程 卒FIT 帳票 要件定義 設計 電力小売業界