# FTP Serverインポートインテグレーション

このデータコネクタを使用して、FTPサーバーからTreasure Dataに直接データをインポートできます。

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

## 前提条件

- Treasure Dataの基本知識
- FTPの基本知識


## 要件

- 有効なプロトコルを使用していることを確認してください。*FTP*または*FTPS*を使用する場合は、このFTP用データコネクタを使用できます。*SFTP*の場合は、[SFTPインテグレーション](/ja/int/sftp-server-import-integration)を使用してください。
- ファイアウォールを使用している場合は、許可されているIPレンジ/ポートを確認してください。サーバー管理者は、セキュリティ上の理由からデフォルトのポート番号を変更することがあります。
- FTPは、デフォルトの制御ポートとして*TCP/21*を使用しますが、パッシブモードを使用している場合は、データ転送ポートとして任意のTCPポートも使用します。このポート範囲は、サーバーの設定によって異なります。
- *パッシブ*モードで接続していることを確認してください。*アクティブ*モードは、FTPサーバー側から接続を確立するため、通常は機能しません。
- FTPSを使用している場合、*Explicit*と*Implicit*の2つのモードがあります。通常はExplicitモードが使用されます。


## インクリメンタルデータ読み込みについて

[インクリメンタル読み込みについて](/ja/int/about-incremental-loading)を参照してください。

## 制限事項、サポート、推奨事項

- 一部のインテグレーションでは、インクリメンタル読み込みを選択する場合、フルテーブルスキャンを回避するために、カラムにインデックスがあることを確認する必要がある場合があります。
- Timestamp、Datetime、および数値カラムのみがincremental_columnsとしてサポートされています。
- 複雑なクエリのプライマリキーを検出できないため、rawクエリにはincremental_columnsが必要です。


## Treasure コンソールを使用して接続を作成する

### 新しい接続を作成する

Treasure Dataでは、クエリを実行する前にデータ接続を作成して設定する必要があります。データ接続の一部として、インテグレーションにアクセスするための認証情報を提供します。

1. **Treasure コンソール**を開きます。
2. **Integrations Hub** > **Catalog**に移動します。
3. FTPを検索して選択します。


![](/assets/image2021-5-21_13-36-7.b2eddd1f280a0076ab93b38d23b44261704c1a26a08599dfb9d01e1d8182b434.44bf5517.png)

1. **Create Authentication**を選択します。


![](/assets/image2021-5-21_13-59-45.cf75b9b7165a93a68e533b13bc42c42bf7cb4345762711ee6e752670c455fc8e.44bf5517.png)

1. リモートFTPインスタンスに必要な認証情報を入力します。選択内容によって、表示されるフィールドが異なる場合があります:


| フィールド | 説明 |
|  --- | --- |
| Host | リモートFTPインスタンスのホスト情報（例:IPアドレス）。 |
| Port | リモートFTPインスタンスの接続ポート。デフォルトは21です。 |
| User | リモートFTPインスタンスへの接続に使用するユーザー名。 |
| Password | リモートFTPインスタンスへの接続に使用するパスワード。 |
| Passive mode | パッシブモードを使用する（デフォルト:チェック済み） |
| ASCII mode | バイナリモードの代わりにASCIIモードを使用する（ブール値、デフォルト:未チェック） |
| Use FTPS/FTPES | FTPS（SSL暗号化）を使用する。（ブール値、デフォルト:未チェック） |
| Verify cert | サーバーによって提供される証明書を検証します。デフォルトでは、サーバー証明書がJVMのデフォルトの信頼できるCAリストのいずれかのCAによって署名されていない場合、接続は失敗します。 |
| Verify hostname | サーバーのホスト名が提供された証明書と一致することを検証します。 |
| Enable FTPES | FTPESはFTPSのセキュリティ拡張です。 |
| SSL CA Cert Content | 証明書ファイルの内容を貼り付けます。 |


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


### Treasure Dataへのデータ転送

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

1. 作成した接続を検索します。
2. **New Source**を選択します。
3. Data Transferフィールドに**Source**の名前を入力します。
4. **Next**を選択します。


Source Tableダイアログが開きます。

![](/assets/image2021-5-21_14-46-32.92f3e56f784344ddabfadf8ef086c2e43b897bb275f2385baa9111a9c4c4fca4.44bf5517.png)

1. 以下のパラメータを編集します:


| パラメータ | 説明 |
|  --- | --- |
| Path prefix | ターゲットファイルのプレフィックス（文字列、必須）。例:resultoutputtest。 |
| Path regex | ファイルパスをクエリするための正規表現を入力します。ファイルパスが指定されたパターンと一致しない場合、そのファイルはスキップされます。例えば、パターン.csv$#を指定した場合、ファイルのパスがパターンと一致しない場合、そのファイルはスキップされます。 |
| Incremental | インクリメンタル読み込みを有効にします（ブール値）、オプション。デフォルト:true。インクリメンタル読み込みが有効な場合、次回実行のconfig diffにはlast_pathパラメータが含まれるため、次回実行ではそのパスより前のファイルがスキップされます。それ以外の場合、last_pathは含まれません。 |
| Start after path | これより辞書順で大きいパスのみがインポートされます。 |


1. **Next**を選択します。


Data Settingsページは、必要に応じて変更できます。または、このページをスキップすることもできます。

![](/assets/image2021-5-25_14-17-8.9d1b85e872058a82e1e9532e533ff8931a7fcf6e36e599d4700e56448b1b4f05.44bf5517.png)

![](/assets/image2021-5-25_13-54-42.fa8e7f008dda3e2db65a0d3d02d7f1b2d2ba79c55636c38883f6493e58042c46.44bf5517.png)![](/assets/screen-shot-2023-08-17-at-10.23.32.cde63417c07ea1746a53bcc6278484026cf4445dd95fc6034928f1271c6c0281.44bf5517.png)

1. 必要に応じて、パラメータを編集します。
2. **Next**を選択します。


### Filters

Filters は、S3、FTP、または SFTP コネクターの Create Source または Edit Source インポート設定で使用できます。

Import Integration Filters を使用すると、インポート用の[データ設定の編集](https://docs.treasuredata.com/smart/project-product-documentation/editing-data-settings)を完了した後、インポートされたデータを変更できます。

import integration filters を適用するには:

1. Data Settings で **Next** を選択します。Filters ダイアログが開きます。
2. 追加したいフィルターオプションを選択します。![](/assets/image-20200609-201955.eed6c6da800ba40d1d98b92e767d9a8f7500cad8a9d4079121190b7d34c23294.c7246827.png)
3. **Add Filter** を選択します。そのフィルターのパラメーターダイアログが開きます。
4. パラメーターを編集します。各フィルタータイプの情報については、次のいずれかを参照してください:


- Retaining Columns Filter
- Adding Columns Filter
- Dropping Columns Filter
- Expanding JSON Filter
- Digesting Filter


1. オプションで、同じタイプの別のフィルターを追加するには、特定の列フィルターダイアログ内で **Add** を選択します。
2. オプションで、別のタイプの別のフィルターを追加するには、リストからフィルターオプションを選択して、同じ手順を繰り返します。
3. 追加したいフィルターを追加した後、**Next** を選択します。Data Preview ダイアログが開きます。


### 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** で転送の結果を確認できます。

## 接続の検証

ジョブログを確認してください。警告とエラーは、インポートの成功に関する情報を提供します。例えば、[インポートエラーに関連するソースファイル名を特定する](https://docs.treasuredata.com/smart/project-product-documentation/data-import-error-troubleshooting)ことができます。

## ワークフローでのエクスポート結果の設定（オプション）

Treasure ワークフロー内では、このデータコネクタを使用してデータをエクスポートするように指定できます。

詳細については、[TD Toolbeltを使用してワークフローでデータをエクスポートする](/tools/cli-and-sdks/api#workflow-commands)をご覧ください。

### FTPのワークフロー例


```yaml
timezone: UTC

schedule:
  daily>: 02:00:00

sla:
  time: 08:00
  +notice:
    mail>: {data: Treasure Workflow Notification}
    subject: This workflow is taking long time to finish
    to: [meg@example.com]

_export:
  td:
    dest_db: dest_db
    dest_table: dest_table
  ftp:
    ssl: true
    ssl_verify: false

+prepare_table:
  td_ddl>:
  database: ${td.dest_db}
  create_tables: ["${td.dest_table}"]

+load_step:
  td_load>: config/daily_load.yml
  database: ${td.dest_db}
  table: ${td.dest_table}
```