オープンソースのバルクデータローダーであるEmbulkを使用して、CSVファイルからTreasure Dataにデータをインポートできます。Embulkを使用すると、さまざまなデータベース、ストレージの場所、ファイル形式、クラウドサービス間でデータを転送できます。

Bulk Importプログラム(td-import)を使用してCSVファイルからデータをインポートすることもできます。ただし、td-importは積極的にメンテナンスされておらず、廃止の候補となっています。そのため、Embulkの使用を強くお勧めします。
- Treasure Dataの基本的な知識
- Embulkの基本的な知識
- Embulkは、Javaアプリケーションです。Javaがインストールされていることを確認してください。
- Installing Bulk Data Importの手順に従ってください。
お好みのテキストエディタを使用して、入力ファイルと出力Treasure Dataパラメータを定義するEmbulk設定ファイル(例:seed.yml)を作成します。
例
in:
type: file
path_prefix: /path/to/files/sample_
out:
type: td
apikey: xxxxxxxxxxxx
endpoint: api.treasuredata.com
database: dbname
table: tblname
time_column: time
mode: replace
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 ""csv"" 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.yml生成されたload.ymlファイル。
in:
type: file
path_prefix: /path/to/files/sample_
'last_path:': /path/to/files/sample_02.csv
parser:
charset: UTF-8
newline: CRLF
type: csv
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でデータベースとテーブルを作成する必要があります。
代替方法:次の場合:
- データベースを追加する必要がある場合
- .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データのサイズによっては、ジョブが完了するまでに数分から数時間かかる場合があります。