Macからembulkを使ってTreasure Dataへのデータ転送を楽々行う

初めまして、JWでWebエンジニアをしているJTです

今回はembulkを使って、MacからTreasure Dataへデータを転送してみます
embulkとはデータ転送ツールで、ドカッとデータを転送する事ができます
内部はJava、プラグイン周りはRubyで出来ています
ではやってみましょー

基本は以下のURLを参考に進めていきます
embulk#quick-start
*事前にJavaのインストールが必要です

インストールは2つの方法で行うことが出来ます

homebrewからインストールする方法
これだけでembulkが使えるようになります、簡単!

公式ページからjarファイルを取得しコマンドへ登録する方法
以下コマンドを叩き、embulkを利用出来るようにする

ターミナル閉じるたびにsourceしなきゃいけない><って方は.bash_profileに以下を追加したら幸せになります

では実際にembulkコマンドを叩いてみます

image02

これでインストールが完了しました

次にTreasure Dataへの転送をするために、embulk-output-tdというプラグインをインストールします
これを入れることで、Treasure Dataへの転送が可能となります
インストールは以下コマンドから行います
*gem と書かれてありますが、Rubyのインストールは別途必要ありません

これで全てインストールが完了しました!
次に転送に使用するファイルと、embulk転送設定ファイルの準備を行います
embulkの設定ファイルは、転送対象ファイルから推測してくれるguessコマンドから作成します

転送ファイル
例: sample_2016.csv

転送ファイルの準備ができました!
次にguessコマンドを実行するために、設定ファイルの雛形を作ります

例: guess.yml

ここのpath_prefix、apikey、database、tableを使用する環境やDBごとに書き換えます
path_prefixは、/user/td_export/data_ のように、prefixを入れるとprefixが入ったファイル名が全て転送対象となります

出来たらembulk guessしてみましょう!
-o オプションを使う事で、推測から作成された設定ファイルの書き出しが行えます
ここで書き出す設定ファイル名はload.ymlとします

image00
出来ました!

以下のpreviewオプションを利用する事で事前確認が出来ちゃったりします

image01
*もしpreviewで失敗した場合、設定ファイルのカラムの型をまず確認してみましょう
NULLや空白が許されるのはstring型だけらしく、long型でNULLデータが入ってくる場合などにコケます
(これ原因判明するまで時間を使ってしまいました。。)
previewで問題がなければ、では実際に転送してみましょう

以下コマンドで転送します

転送が終了したらTresure Data側で確認してみましょう

embulkを使うと、転送もバッチ化などが出来るのでオススメです

それではステキなembulkライフをー