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

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

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

## 前提条件

- Treasure Dataの基礎知識
- [Embulk](http://www.embulk.org/docs/)の基礎知識
- [バルクデータインポートのインストール](/products/customer-data-platform/integration-hub/batch/import/bulk-data-import#installing-bulk-data-import)の手順に従う
- マシンに[EmbulkとEmbulk-output-td](http://www.embulk.org/docs/)プラグインがインストールされていること


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

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


```bash
embulk gem install embulk-input-s3
```

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

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


```yaml
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](https://github.com/embulk/embulk-input-s3)を参照してください。

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

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


```bash
embulk guess seed.yml -o load.yml
```

存在しないテーブルが自動的に作成されるように、load.ymlに"auto_create_table: true"パラメータを追加します。

以下は、.ymlファイル内のauto_create_tableパラメータのサンプルです。


```yaml
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コマンドを実行してください:



```bash
td database:create dbname
td table:create dbname tblname
```

Treasure コンソールを使用してdatabaseとtableを作成することもできます。

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

Treasure コンソールまたはコマンドラインからdatabaseとtableを作成します:


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

## ロードジョブの実行

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


```bash
embulk run load.yml
```

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