embulk-plugin-input-randomを作った
データベースを使って何かする際に、ダミーデータが超大量に欲しくなることがあるのでembulkのinput-pluginを作ってみた。
何もない環境からなら
$ wget https://bintray.com/artifact/download/embulk/maven/embulk-0.2.1.jar -O embulk.jar
でembulk本体のが降ってくるのでそれを使って
$ java -jar embulk.jar gem install embulk-plugin-input-random
とすればプラグインが降ってくる。
exec: {} in: type: random rows: 100 schema: id: primary_key name: string score: integer out: type: stdout
こんな感じのconfig.ymlを書いて
$ java -jar embulk.jar preview
と打てば
Random generation started. Random generator input thread 0... +---------+---------------------------------------------+------------+ | id:long | name:string | score:long | +---------+---------------------------------------------+------------+ | 0 | 9zfeb1fG7Ha3xxjA_UBUY3QdR1R3ltKYjADjYCthSVc | 6,180 | | 1 | Ry68YnNi9mQQ-9EEtdftd9R21Z78dMZBDqc0IhNgI_M | 1,914 | | 2 | DGZUeG961dILfRLx-sdcO6AJIvS6ulAj0qvffdR_uNo | 3,316 | | 3 | spIhxVLfvd1tjDnbJZ2-nsITY8kZnL6mjpaDJ2tBf_M | 5,319 | | 4 | ZwuViDwHONHCX47bv-tN7m48mdcr-G4d_laWBXscAUA | 5,767 | | 5 | QM3H4QUvFSrqRAEUjbHRxnEGgSVUtfpMqh7scp-aiZk | 628 | | 6 | oHzeKtNeULRxTn2_5SPWapSTPxTS6bTCPGZBTBKY_qo | 7,244 | ....
とこんな感じの物が画面に出てくる。
出力先を適当に書き換えてプラグインを用意すれば任意のデータベースにぶっこむ事ができる。
使い方としては以上なんだけど、これから作ろうと思っている機能についてもちょっと書く。
コンフィグの書き方として以下のような書き方ができるようにしていきたいという妄想。
in: type: random schema: - key: phone type: - japan-phone-number # 日本の電話番号っぽいものを生成する - key: name type: - japanese-human-name # 日本人っぽい名前を生成する - english-human-name # 英語圏っぽい名前を生成する - key: place type: - japan-prefecture # 日本の都道府県をランダムに選ぶ - key: score type: random: # 50から200までの一様分布の乱数を生成 min: 50 max: 200
こういう風に書いて
+---------------+-------------------+--------------+------------+ | phone:string | name:string | place:string | score:long | +---------------+-------------------+--------------+------------+ | 03-1111-1111 | 佐藤 裕太 | 東京都 | 123 | | 052-1234-5678 | 鈴木 健二 | 東京都 | 98 | | 090-2345-6789 | Michael Johonston | 神奈川県 | 169 | | 03-3456-7890 | 井上 裕子 | 千葉県 | 112 |
こんな感じの物がランダム生成(全部完全に適当にランダムなので一切気にしないで)できるようになるといいかなと思っていて、次の余暇のプログラミングの時にでも作る。