Skip to content
Last updated

AWS S3からのEmbulkバルクインポート

embulk-input-s3インプットプラグインを使用して、AWS S3バケットからTreasure Dataにファイルをインポートできます。

以下のトピックに進みます:

前提条件

embulk-input-s3プラグインのインストール

embulk-input-s3プラグインをインストールするには、以下のコマンドを実行します:

embulk gem install embulk-input-s3

シード設定ファイルの作成

お好みのテキストエディタを使用して、インプット(S3)とアウトプット(TD)のパラメータを定義するEmbulk設定ファイル(例:seed.yml)を作成します。例:

in:
  type: s3
  bucket: s3bucket
  path_prefix: path/to/sample_file    # s3バケット上の*.csvまたは*.tsvファイルのパス
  access_key_id: xxxxxxxxxx
  secret_access_key: xxxxxxxxxxx
out:
  type: td
  apikey: xxxxxxxxxxxx
  endpoint: api.treasuredata.com
  database: dbname
  table: tblname
  time_column: datecolumn
  mode: replace
  #デフォルトでは、定義されていない場合mode: appendが使用されます。
  # インポートされたレコードは、このモードでターゲットテーブルに追加されます。
  #mode: replaceは、既存のターゲットテーブルを置き換えます
  default_timestamp_format: '%d/%m/%Y'

embulk-input-s3で利用可能な追加パラメータの詳細については、Embulk Input S3を参照してください。

フィールドの推測 (load.ymlの生成)

Embulkのguessオプションは、seed.ymlを使用してターゲットファイルを読み取り、カラムのタイプ/設定を自動的に推測し、この情報を含む新しいファイルload.ymlを作成します。

embulk guess seed.yml -o load.yml

存在しないテーブルが自動的に作成されるように、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でdatabaseとtableを作成する必要があります。

  1. databaseを追加する必要がある場合、または2) .ymlファイルにauto_create_tableパラメータを追加せず、tableを追加する必要がある場合は、以下のTDコマンドを実行してください:
td database:create dbname
td table:create dbname tblname

TD Consoleを使用してdatabaseとtableを作成することもできます。

embulk preview load.ymlコマンドを使用してデータをプレビューできます。カラムタイプやデータに誤りがあると思われる場合は、load.ymlファイルを直接編集して再度プレビューして確認できます。guessオプションが満足のいく結果を得られない場合は、CSV/TSVパーサープラグインオプションに従って、要件に応じてload.ymlのパラメータを手動で変更できます。

TD Consoleまたはコマンドラインからdatabaseとtableを作成します:

$ td database:create dbname
$ td table:create dbname tblname

ロードジョブの実行

以下のコマンドを使用してインポートジョブを実行します:

embulk run load.yml

データのサイズによっては、ジョブが完了するまで数分から数時間かかる場合があります。