オープンソースの一括データローダーである Embulk を使用して、TSVファイルからTreasure Dataにデータをインポートできます。

- Treasure Dataの基本的な知識。
- Embulkの基本的な知識。
- JRubyがインストールおよび設定されている必要があります。Embulk v0.10.50およびv0.11.0にはJRubyが含まれていないため、手動でインストールおよび設定する必要があります。(EmbulkとJRubyの設定の詳細については、Embulk v0.11 is coming soonの「JRuby」セクションを参照してください。)
Embulkを使用すると、さまざまなデータベース、ストレージの場所、ファイル形式、クラウドサービス間でデータを転送できます。
EmbulkはJavaアプリケーションです。Javaがインストールされていることを確認してください。
次の4つのコマンドで、Embulkをホームディレクトリにインストールします:
curl --create-dirs -o ~/.embulk/bin/embulk -L "http://dl.embulk.org/embulk-latest.jar"
chmod +x ~/.embulk/bin/embulk
echo 'export PATH="$HOME/.embulk/bin:$PATH"' >> ~/.bashrc
source ~/.bashrcEmbulkはJavaアプリケーションです。Javaがインストールされていることを確認してください。
cmd.exeまたはPowerShell.exeで次のコマンドを使用して、embulk.batをダウンロードできます:
PowerShell -Command \
"& {Invoke-WebRequest http://dl.embulk.org/embulk-latest.jar -OutFile embulk.bat}"pluginを使用して、さまざまなシステムやファイル形式からデータをロードできます。公開されているpluginのリストを表示するには、カテゴリ別のpluginリストを参照してください。
次のコマンドでembulk-output-td pluginをインストールします。このpluginは、レコードをTreasure Dataにインポートします。
embulk gem install embulk-output-tdお好みのテキストエディタを使用して、入力(file)および出力(TD)パラメータを定義するembulk設定ファイル(例:seed.yml)を作成します。例:
in:
type: file
path_prefix: /path/to/files/sample_ # path of *.csv or *.tsv file on your local machine
out:
type: td
apikey: xxxxxxxxxxxx
endpoint: api.treasuredata.com
database: dbname
table: tblname
time_column: time
mode: replace
#by default mode: append is used, if not defined. Imported records are appended to the target table with this mode.
#mode: replace, replaces existing target table
default_timestamp_format: '%Y-%m-%d %H:%M:%S'これはサンプルデータです。
id,account,time,purchase,comment
1,32864,2015-01-27 19:23:49,20150127,embulk
2,14824,2015-01-27 19:01:23,20150127,embulk jruby
3,27559,2015-01-28 02:20:02,20150128,"Embulk ""TSV"" parser plugin"
4,11270,2015-01-29 11:54:36,20150129,NULLembulk-local-file-inputで使用可能な追加パラメータの詳細については、Embulk Local file inputを参照してください。また、embulk-output-tdの詳細については、TD output plugin for Embulkを参照してください。
Embulkのguessオプションは、seed.ymlを使用してターゲットファイルを読み取り、カラムタイプと設定を自動的に推測し、この情報を含む新しいファイルload.ymlを作成します。
embulk guess seed.yml -o load.ymlin:
type: file
path_prefix: /path/to/files/sample_
'last_path:': /path/to/files/sample_02.tsv
parser:
charset: UTF-8
newline: CRLF
type: tsv
delimiter: ','
quote: '"'
escape: '"'
null_string: 'NULL'
trim_if_not_quoted: false
skip_header_lines: 1
allow_extra_columns: false
allow_optional_columns: false
columns:
- name: id
type: long
- name: account
type: long
- name: time
type: timestamp
format: '%Y-%m-%d %H:%M:%S'
- name: purchase
type: timestamp
format: '%Y%m%d'
- name: comment
type: string
out:
type: td
apikey: xxxxx
endpoint: api.treasuredata.com
database: dbname
table: tblname
time_column: time
mode: replace
default_timestamp_format: '%Y-%m-%d %H:%M:%S'存在しないテーブルが自動的に作成されるように、load.yml に "auto_create_table: true" パラメータを追加してください。
.yml ファイル内の auto_create_table パラメータのサンプルです。
out:
type: td
apikey: your apikey
endpoint: api.treasuredata.com
database: dbname
table: tblname
time_column: created_at
auto_create_table: true
mode: appendロードジョブを実行する前に、TD でデータベースとテーブルを作成する必要があります。代替方法:1) データベースを追加する必要がある場合、または 2) .yml ファイルに auto_create_table パラメータを追加せずにテーブルを追加する必要がある場合は、以下の TD コマンドを実行してください。
td database:create dbname
td table:create dbname tblnameTD Console を使用してデータベースとテーブルを作成することもできます。
embulk preview load.yml コマンドを使用してデータをプレビューできます。カラムの型やデータに問題がある場合は、load.yml ファイルを直接編集して再度プレビューして確認できます。guess オプションで満足のいく結果が得られない場合は、CSV/TSV parser plugin options を使用して、要件に応じて load.yml のパラメータを手動で変更できます。
embulk preview load.yml最後に、以下のコマンドを実行してインポートジョブを発行します。
embulk run load.ymlデータのサイズによっては、ジョブの完了に数分から数時間かかる場合があります。
Bulk Import プログラム(td-import)を使用して TSV ファイルからデータをインポートすることもできます。ただし、td-import は積極的にメンテナンスされておらず、将来的に非推奨となる可能性があることに注意してください。そのため、Embulk の使用を強く推奨します。