# AWS S3向けレガシーバルクインポート

この記事では、Amazon S3からTreasure Dataにデータを直接インポートする方法について説明します。

# バルクインポートのインストール

まず、バルクローダープログラムを含む[Toolbelt](https://support.treasuredata.com/hc/en-us/articles/command-line)をお使いのコンピューターにインストールします。

## ダウンロード

- [Toolbelt Installer for Windows](https://toolbelt.treasuredata.com/win)
- [Toolbelt Installer for Mac OS X](https://toolbelt.treasuredata.com/mac)
- [Toolbelt Installer for Linux](/tools/cli-and-sdks/quickstart)


インストール後、お使いのコンピューターに`td`コマンドがインストールされます。ターミナルを開いて`td`と入力してコマンドを実行してください。また、`java`もインストールされていることを確認してください。`td import:jar_update`を実行して、最新バージョンのバルクローダーをダウンロードします:


```
$ td
usage: td [options] COMMAND [args]
$ java
Usage: java [-options] class [args...]
$ td import:jar_update
Installed td-import.jar 0.x.xx into /path/to/.td/java
```

# 認証

Treasure アカウントにログインします。


```
$ td account -f
Enter your Treasure Data credentials.
Email: xxxxx
Password (typing will be hidden):
Authenticated successfully.
Use 'td db:create db_name' to create a database.
```

# Amazon S3からのデータインポート

バルクローダーは、Amazon S3に保存されたファイルから、サポートされている3つのファイル形式でデータを読み取ることができます:

- CSV(デフォルト)
- JSON
- TSV


Amazon S3に次の内容の`data.csv`というファイルがあるとします:


```
"host","log_name","date_time","method","url","res_code","bytes","referer","user_agent"
"64.242.88.10","-","2004-03-07 16:05:49","GET","/twiki/bin/edit/Main/Double_bounce_sender?topicparent=Main.ConfigurationVariables",401,12846,"",""
"64.242.88.10","-","2004-03-07 16:06:51","GET","/twiki/bin/rdiff/TWiki/NewUserTemplate?rev1=1.3&rev2=1.2",200,4523,"",""
"64.242.88.10","-","2004-03-07 16:10:02","GET","/mailman/listinfo/hsdivision",200,6291,"",""
"64.242.88.10","-","2004-03-07 16:11:58","GET","/twiki/bin/view/TWiki/WikiSyntax",200,7352,"",""
```

次のコマンドを実行してCSVファイルをアップロードします:


```
$ td db:create my_db
$ td table:create my_db my_tbl
$ td import:auto \
  --format csv --column-header \
  --time-column date_time \
  --time-format "%Y-%m-%d %H:%M:%S" \
  --auto-create my_db.my_tbl \
  "s3://s3_access_key:s3_secret_key@/my_bucket/path/to/data.csv"
```

ファイルの場所は、AWSのパブリックおよびプライベートアクセスキーが埋め込まれたS3パスとして表現されます。

`td import:auto`は無効な行をチェックするためにMapReduceジョブを実行するため、少なくとも**1〜2分**かかります。`--time-column`に選択したカラムがエポックタイムスタンプ(またはUnix時間)の場合、`--time-format`フラグは不要です。

上記のコマンドでは、次のことを想定しています:

- CSVファイルはAmazon S3上の`my_bucket`というバケット内の`/path/to/`というパス/キー配下に配置されています。
- ファイルの最初の行にはカラム名が記載されているため、`--column-header`オプションを指定しています。ファイルの最初の行にカラム名がない場合は、`--columns`オプションでカラム名を指定する必要があります(オプションで`--column-types`オプションでカラム型を指定できます)。または、ファイル内の各カラムに対して`--column-types`を使用します。
- 時刻フィールドは"date_time"と呼ばれ、`--time-column`オプションで指定されています
- 時刻形式は`%Y-%m-%d %H:%M:%S`であり、`--time-format`オプションで指定されています


### ワイルドカード

バルクローダーでインポートするソースファイルは、完全なAmazon S3パスまたはワイルドカードを使用して指定できます。以下にいくつかの例を示します:

- `s3://my_bucket/path/to/data*`
`my_bucket/path/to/`配下にある、プレフィックスが`data`のすべてのファイル
- `s3://my_bucket/path/to/data*.csv`
`my_bucket/path/to/`配下にある、プレフィックスが`data`で拡張子が`.csv`のすべてのファイル
- `s3://my_bucket/path/to/*.csv`
`my_bucket/path/to/`配下にある、拡張子が`.csv`のすべてのファイル
- `s3://my_bucket/path/to/*`
`my_bucket/path/to/`配下のすべてのファイル
- `s3://my_bucket/path/to/*/*.csv`
`my_bucket/path/`の直接のサブフォルダ内にある、拡張子が`.csv`のすべてのファイル
- `s3://my_bucket/**/*.csv`
`my_bucket/path/`のすべてのサブフォルダ内にある、拡張子が`.csv`のすべてのファイル


詳細については、以下のページを参照してください:

- [Bulk Import Internals](/ja/int/legacy-bulk-import-internals)
- [Bulk Import Tips and Tricks](/ja/int/legacy-bulk-import-tips-and-tricks)