# 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](https://toolbelt.treasuredata.com/linux) インストール後、`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 Dataアカウントにログインします。 ``` $ 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://prestodb.io/docs/current/functions/json.md)を使用して解析できます。ただし、追加のCPUパフォーマンスオーバーヘッドを避けるために、フラットなJSON構造を維持することをお勧めします。