EmbulkでjsonをインプットとしてMySQLへアウトプットしたい
2年前にcsvをインプットにしたことがあるので、これを参考にjsonをインプットにする方法を調べる
インプットとなるjsonファイルは1行1オブジェクトで配列ではない
{"id": 1, "name": "AAA"} {"id": 2, "name": "BBB"}
このとき2年前のembulkバージョン(v0.9.12)のままだと1オブジェクトをJSON型1カラムを持つレコードとして登録された
+-----------------------+ | record:json | +-----------------------+ | {"id":1,"name":"AAA"} | | {"id":2,"name":"BBB"} | +-----------------------+
これをパースするには、バージョンをv0.9.16以上にする必要がある
ただ、いまのバージョンが古すぎてselfupdate
というサブコマンドを実行してもアップデートされなかったので、最新のバイナリをダウンロードして上書きした
$ curl --create-dirs -o ~/.embulk/bin/embulk -L "https://dl.embulk.org/embulk-latest.jar" $ source ~/.bashrc
バージョンを確認
$ embulk --version embulk 0.9.23
v0.9.16以上なのでjsonをパースして各カラムに登録できるようになった
in: type: file path_prefix: ./input.json parser: type: json charset: UTF-8 newline: LF root: /propertyId columns: - {name: id, type: long} - {name: name, type: string} out: type: mysql host: localhost user: uggds password: password database: test_db table: test mode: replace
+---------+-------------+ | id:long | name:string | +---------+-------------+ | 1 | AAA | | 2 | BBB | +---------+-------------+