# MySQL Import Integration

この記事では、MySQLからTreasure Dataにデータを直接インポートできるMySQLのデータコネクタの使用方法について説明します。

MySQLからデータをインポートするサンプルワークフローについては、[Treasure Boxes](https://github.com/treasure-data/treasure-boxes/tree/master/td_load/mysql)をご覧ください。

## 前提条件

- Treasure Dataの基本知識
- MySQLの基本知識
- Treasure Dataから到達可能なMySQLインスタンス


MySQL Community Server 5.6および5.7を使用しており、SSLを使用したい場合は、コネクタの基礎となるライブラリとの互換性の問題を解決するために、パラメータenabledTLSProtocolsとTLSv1.2を設定してください。その他のMySQLバージョンでは、インテグレーションは自動的に最高のTLSバージョンを使用しようとします。

## 新しい認証を作成する

データ接続を構成する際、インテグレーションにアクセスするための認証を提供します。Treasure Dataでは、認証を構成してからソース情報を指定します。

1. **Treasure コンソール**を開きます。
2. **Integrations Hub** > **Catalog**に移動します。
3. MySQLを検索して選択します。
4. Createを選択します。
5. 次のダイアログが開きます。
![](/assets/image-20200807-220819.a962755273a28f97c204e67186bdefa152ab0f5ce513d24ae296dbebb211044e.5eb0b7b2.png)
![](/assets/image-20200807-220754.d242027085c7c9e0e27ca9fb44cdca09ac24ba74833dc63bd0f3d40bceef10cd.5eb0b7b2.png)
6. 以下のパラメータを設定します。**Continue**を選択します。


| **パラメータ** | **説明** |
|  --- | --- |
| **Host** | リモートデータベースのホスト情報（例: IPアドレス）。 |
| **Port** | リモートインスタンスの接続ポート。MySQLのデフォルトは3306です。 |
| **Username** | リモートデータベースに接続するためのユーザー名。 |
| **Password** | リモートデータベースに接続するためのパスワード。 |
| SSL Mode | [SSL mode](/ja/int/mysql-import-integration-cli)の詳細をご覧ください |
| useLegacyDatetimeCode | [useLegacyDatetimeCode](https://docs.treasuredata.com/smart/project-product-documentation/backward-incompatibility-required-setting-change-for-the-mysql-data-connector-2018)の詳細をご覧ください |
| OPTIONS |  |
| **JDBC Connection options** | リモートデータベースで必要な特別なJDBC接続。 |
| **Socket connection timeout** | ソケット接続のタイムアウト（秒単位）（デフォルトは300）。 |
| **Network timeout** | ネットワークソケット操作のタイムアウト（秒単位）。0はタイムアウトなしを意味します。 |


### 接続に名前を付ける

1. 接続の名前を入力します。
2. **Done**を選択します。


### MySQLアカウントデータをTreasure Dataに転送する

認証済み接続を作成すると、自動的にAuthenticationsに移動します。

1. 作成した接続を検索します。
2. **New Source**を選択します。


### **Connection**

1. Data Transferフィールドに**Source**の名前を入力します。
![](/assets/image-20200218-202637.d734395e62f374a8939dd877d074961ebc7ec1eeebf62a33863dc411a5084f49.5eb0b7b2.png)


### Source Table

データを取り込むデータベースとテーブルの詳細を入力します。

1. **Next**を選択します。
2. 以下のパラメータを編集します。


| **パラメータ** | **説明** |
|  --- | --- |
| **Database name** | データを転送するデータベースの名前。（例: `your_database_name`） |
| **Use custom SELECT query?** | 単純なSELECT (columns) FROM table WHERE (condition)以上のものが必要な場合に使用します。 |
| **SELECT columns** | 特定のカラムからのみデータを取得したい場合は、ここにリストします。それ以外の場合は、すべてのカラムが転送されます。 |
| **Table** | データをインポートするテーブル。 |
| **WHERE condition** | テーブルから取得するデータに追加の特定性が必要な場合は、`WHERE`句の一部として指定できます。 |


### Data Settings

1. **Next**を選択します。
Data Settingsページが開きます。
2. オプションで、データ設定を編集するか、このダイアログページをスキップします。
![](/assets/image-20200807-215221.194753fadf79b1d3cbe97d888360962de1a4cd7a32b7059df54d7b929cf40314.5eb0b7b2.png)


| **パラメータ** | **説明** |
|  --- | --- |
| **Incremental** | この転送を繰り返し実行する場合、このチェックボックスにより、前回のインポート実行以降のデータのみをインポートできます。 |
| **Rows per batch** | 非常に大きなデータセットは、メモリの問題とそれに伴うジョブの失敗につながる可能性があります。このフラグにより、メモリの問題とジョブの失敗の可能性を減らすために、行数ごとにインポートジョブをバッチに分割できます。 |
| **Default timezone** | インポート時に使用されるタイムゾーン。デフォルトは`UTC`ですが、必要に応じて変更できます。 |
| **After SELECT** | このSQLは、同じトランザクション内でSELECTクエリの後に実行されます。 |
| **Column Options** | インポート前にカラムのタイプを変更する必要がある場合は、このオプションと関連するカラムの詳細を選択します。入力した詳細設定を保存するには、`Save`を選択します。 |


### Data Preview

インポートを実行する前に、Generate Preview を選択してデータの[プレビュー](/products/customer-data-platform/integration-hub/batch/import/previewing-your-source-data)を表示できます。Data preview はオプションであり、選択した場合はダイアログの次のページに安全にスキップできます。

1. **Next** を選択します。Data Preview ページが開きます。
2. データをプレビューする場合は、**Generate Preview** を選択します。
3. データを確認します。


### Data Placement

データの配置について、データを配置したいターゲット database と table を選択し、インポートを実行する頻度を指定します。

1. **Next** を選択します。Storage の下で、インポートされたデータを配置する新しい database を作成するか、既存の database を選択し、新しい table を作成するか、既存の table を選択します。
2. **Database** を選択 > **Select an existing** または **Create New Database** を選択します。
3. オプションで、database 名を入力します。
4. **Table** を選択 > **Select an existing** または **Create New Table** を選択します。
5. オプションで、table 名を入力します。
6. データをインポートする方法を選択します。
  - **Append** (デフォルト) - データインポートの結果は table に追加されます。
table が存在しない場合は作成されます。
  - **Always Replace** - 既存の table の全体の内容をクエリの結果出力で置き換えます。table が存在しない場合は、新しい table が作成されます。
  - **Replace on New Data** - 新しいデータがある場合のみ、既存の table の全体の内容をクエリの結果出力で置き換えます。
7. **Timestamp-based Partition Key** 列を選択します。
デフォルトキーとは異なるパーティションキーシードを設定したい場合は、long または timestamp 列をパーティショニング時刻として指定できます。デフォルトの時刻列として、add_time フィルターで upload_time を使用します。
8. データストレージの **Timezone** を選択します。
9. **Schedule** の下で、このクエリを実行するタイミングと頻度を選択できます。


#### 一度だけ実行

1. **Off** を選択します。
2. **Scheduling Timezone** を選択します。
3. **Create & Run Now** を選択します。


#### 定期的に繰り返す

1. **On** を選択します。
2. **Schedule** を選択します。UI では、*@hourly*、*@daily*、*@monthly*、またはカスタム *cron* の 4 つのオプションが提供されます。
3. **Delay Transfer** を選択して、実行時間の遅延を追加することもできます。
4. **Scheduling Timezone** を選択します。
5. **Create & Run Now** を選択します。


転送が実行された後、**Data Workbench** > **Databases** で転送の結果を確認できます。