# JSONファイルからのレガシーバルクインポート

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

# Bulk Loaderのインストール

お使いのコンピュータに[Toolbelt](https://toolbelt.treasuredata.com/)をインストールしてください。Toolbeltには、当社のbulk loaderプログラムが含まれています。

- [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`を実行して、bulk loaderの最新バージョンをダウンロードします。


```
$ 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.
```

## JSONからデータをインポートする

`data.json`というファイルがあり、その内容が次の例のようになっている場合:


```
$ head -n 1 data.json
{"host":"224.225.147.72","user":"-","method":"GET","path":"/category/electronics","code":200,"referer":"-","size":43,"agent":"Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0)","date_time":"2004-03-07 16:05:49"}
```

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


```
$ td db:create my_db
$ td table:create my_db my_tbl
$ td import:auto \
  --format json \
  --time-column date_time \
  --time-format "%Y-%m-%d %H:%M:%S" \
  --auto-create my_db.my_tbl \
  ./data.json
```

|  |
|  --- |
| `td import:auto`は、無効な行をチェックするためにMapReduceジョブを実行するため、最低でも**1～2分**かかります。 |


| --- |

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

- データファイルは`data.json`という名前で、現在のディレクトリにある(`./data.json`)
- JSON形式では通常、列名が指定されます。指定されていない場合は、`--columns`オプションで列名を指定する必要があります(オプションで`--column-types`オプションで列の型を指定することもできます)。または、ファイル内の各列に対して`--column-types`を使用します。
- 時刻フィールドは"date_time"という名前で、`--time-column`オプションで指定されています
- 時刻フォーマットは`%Y-%m-%d %H:%M:%S`で、`--time-format`オプションで指定されています


## ネストされたJSONレコードの処理

ネストされたJSONレコードは、HiveのネイティブUDF関数である[get_json_object](https://cwiki.apache.org/confluence/display/Hive/LanguageManual+UDF)またはPrestoのネイティブ[JSON関数](https://trino.io/docs/423/functions/json.html)を使用して解析できます。ただし、追加のCPUパフォーマンスオーバーヘッドを避けるために、フラットなJSON構造を維持することをお勧めします。