Quantcast
Channel: Node.jsタグが付けられた新着記事 - Qiita
Viewing all articles
Browse latest Browse all 8883

Nodeで、SJISで、かつ、行ごとに列数が変動するcsvを読み込んでみた

$
0
0

Nodeにて、SJISで、かつ列数が行ごとに変動するcsvを読み込んで使う必要があったため、
試行錯誤して実装できたコードを残しておきます。

いろいろな参考コードがネットにありましたが、
「SJISで、非同期読み込みで実装」そのままのものは見つからず、
結構試行錯誤しました。
どなたかの参考になれば幸いにて。

constcsv=require('csv')constfs=require('fs')consticonv=require('iconv-lite')constcsvFilePath='./path/to/csv_file.csv'/**
 * csvデータの取得(SJISのファイル)
 */constgetCsv=asyncfunction(){returnnewPromise(resolve=>{fs.readFile(csvFilePath,function(err,data){//非同期処理なのでreadFileSyncではなくreadFileif(err)throwerrconstbuf=Buffer.from(data,'binary')//new BufferはdeprecatedなのでBuffer.fromを使うconstret=iconv.decode(buf,'Shift_JIS')//SJISをdecodeconstret2=iconv.encode(ret,'UTF-8')//UTF-8へencodecsv.parse(ret,{relax_column_count:true},//列数変動ファイルの読込オプションfunction(err,output){resolve(output)})})})}asyncfunctionmain(){constdata=awaitgetCsv()//非同期読込console.log(data)//UTF-8でのCSVデータ確認console.log(data.length)//行数の確認}main()//実行

参考:オプション設定で参考になったページ
csv parser本家ページ


Viewing all articles
Browse latest Browse all 8883