Edited at

embulkで機種依存文字が使われたcsvファイル取り込む方法

More than 3 years have passed since last update.


【お知らせ】embulk v0.6.2以降からこの対応は不要となりました

次の手順を参考にアップデートしましょう!


はじめに

embulkでcsvファイルを処理する際、guessサブコマンドを用いて設定を自動生成できるのは便利ですね!

その時にcsvであればShift_JISがセットされることが多いのですが、次のような機種依存文字が使われうるファイルである場合には注意が必要です。


  • ㈱なになに

※ この1文字目が機種依存文字


guessサブコマンドを用いて設定を自動生成する

最小限の設定を手で書きます。

$ vim partial-config.yml

in:
type: file
path_prefix: ./items.csv
out:
type: stdout

ここで作ったpartial-config.ymlを元に、config.ymlを生成します。

$ embulk guess partial-config.yml -o config.yml

このときプレビュー表示があるので期待通りに動いていることが分かりやすく、安心感がありますね。

出来上がったファイルは次の通りです。

$ vim config.yml

in:
type: file
path_prefix: ./items.csv
parser:
charset: Shift_JIS
newline: CRLF
type: csv
delimiter: ','
quote: '"'
escape: ''
skip_header_lines: 0
columns:
- {name: c0, type: string}
- {name: c1, type: string}
- {name: c2, type: string}
- {name: c3, type: string}
- {name: c4, type: string}

以下略


機種依存文字に対応させる

さて、ここからがメインです。

先ほど生成したconfig.ymlのparserの中のcharsetを、次のように書き換えます

@@ -7 +7 @@

- charset: Shift_JIS
+ charset: MS932

これで、取り込む際に文字化けしなくなりました。

embulk最高ですね〜♪