# Embulk Bulk Import from CSV files オープンソースのバルクデータローダーであるEmbulkを使用して、CSVファイルからTreasure Dataにデータをインポートできます。Embulkを使用すると、さまざまなデータベース、ストレージの場所、ファイル形式、クラウドサービス間でデータを転送できます。 ![](/assets/image-20191021-194315.1d20dc43b99774785560764470f9f3522e77b6b3188edfe480ebf89b39071dba.75c1e439.png) Bulk Importプログラム(td-import)を使用してCSVファイルからデータをインポートすることもできます。ただし、td-importは積極的にメンテナンスされておらず、廃止の候補となっています。そのため、Embulkの使用を強くお勧めします。 ## 前提条件 - Treasure Dataの基本的な知識 - [Embulk](http://www.embulk.org/docs/)の基本的な知識 - Embulkは、Javaアプリケーションです。Javaがインストールされていることを確認してください。 - [Installing Bulk Data Import](https://docs.treasuredata.com/smart/project-product-documentation/installing-bulk-data-import)の手順に従ってください。 ## シード設定ファイルの作成 お好みのテキストエディタを使用して、入力ファイルと出力Treasure Dataパラメータを定義するEmbulk設定ファイル(例:seed.yml)を作成します。 **例** ```yaml in: type: file path_prefix: /path/to/files/sample_ out: type: td apikey: xxxxxxxxxxxx endpoint: api.treasuredata.com database: dbname table: tblname time_column: time mode: replace default_timestamp_format: '%Y-%m-%d %H:%M:%S' ``` これはサンプルデータです。 ``` id,account,time,purchase,comment 1,32864,2015-01-27 19:23:49,20150127,embulk 2,14824,2015-01-27 19:01:23,20150127,embulk jruby 3,27559,2015-01-28 02:20:02,20150128,"Embulk ""csv"" parser plugin" 4,11270,2015-01-29 11:54:36,20150129,NULL ``` embulk-local-file-inputで使用可能な追加パラメータの詳細については、[Embulk Local file input](http://www.embulk.org/docs/built-in.md#local-file-input-plugin)を参照してください。また、embulk-output-tdの詳細については、[TD output plugin for Embulk](https://github.com/treasure-data/embulk-output-td#td-output-plugin-for-embulk)を参照してください。 ## フィールドの推測(load.ymlの生成) Embulkのguessオプションは、`seed.yml`を使用してターゲットファイルを読み取り、カラムタイプと設定を自動的に推測し、この情報を含む新しいファイル`load.yml`を作成します。 ```bash embulk guess seed.yml -o load.yml ``` 生成されたload.ymlファイル。 ```yaml in: type: file path_prefix: /path/to/files/sample_ 'last_path:': /path/to/files/sample_02.csv parser: charset: UTF-8 newline: CRLF type: csv delimiter: ',' quote: '"' escape: '"' null_string: 'NULL' trim_if_not_quoted: false skip_header_lines: 1 allow_extra_columns: false allow_optional_columns: false columns: - {name: id, type: long} - {name: account, type: long} - {name: time, type: timestamp, format: '%Y-%m-%d %H:%M:%S'} - {name: purchase, type: timestamp, format: '%Y%m%d'} - {name: comment, type: string} out: {type: td, apikey: xxxxx, endpoint: api.treasuredata.com, database: dbname, table: tblname, time_column: time, mode: replace, default_timestamp_format: '%Y-%m-%d %H:%M:%S'} ``` ベストプラクティス: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でデータベースとテーブルを作成する必要があります。 - 代替方法:次の場合: - データベースを追加する必要がある場合 - .ymlファイルにauto_create_tableパラメータを追加せず、テーブルを追加する必要がある場合 次のTDコマンドを実行します: ```bash td database:create dbname td table:create dbname tblname ``` [TD Console](https://console.treasuredata.com/app/databases)を使用してデータベースとテーブルを作成することもできます。 `embulk preview load.yml`コマンドを使用してデータをプレビューできます。カラムタイプやデータが正しくない場合は、`load.yml`ファイルを直接編集して、再度プレビューして確認できます。`guess`オプションが満足のいく結果を生成しない場合は、[CSV/TSV parser plugin options](http://www.embulk.org/docs/built-in.md#csv-parser-plugin)を使用して、要件に応じて`load.yml`のパラメータを手動で変更できます。 ```bash embulk preview load.yml ``` # ロードジョブの実行 次のコマンドを実行してインポートジョブを発行します: ```bash embulk run load.yml ``` データのサイズによっては、ジョブが完了するまでに数分から数時間かかる場合があります。