> ## Documentation Index
> Fetch the complete documentation index at: https://www.integrate.io/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# ETL: Xplenty入門 Part5: Destinationの設定

> Integrate.io ETLのDestinationコンポーネントの種類と、DatabaseやFile Storageなどの送信先ごとの詳細設定方法を初心者向けに解説します。

こんにちは。今回はDestinationコンポーネントの設定、つまりデータのロード対象となる**送信先**のデータベースやストレージに関する設定について解説したいと思います。

まずDestinationコンポーネントには複数の種類があります。

<Frame>
  <img src="https://mintcdn.com/integrateio/S5PjFuXd0nNm4BaF/images/japanese-knowledge-base/novice-part05-jp/image-1.webp?fit=max&auto=format&n=S5PjFuXd0nNm4BaF&q=85&s=0a2919fcfc54c3a9d6136655f0d227ed" alt="novice-part05-jp image 1" width="1055" height="801" data-path="images/japanese-knowledge-base/novice-part05-jp/image-1.webp" />
</Frame>

<Frame>
  <img src="https://mintcdn.com/integrateio/S5PjFuXd0nNm4BaF/images/japanese-knowledge-base/novice-part05-jp/image-2.webp?fit=max&auto=format&n=S5PjFuXd0nNm4BaF&q=85&s=d031332d4108dbc60eae9b8fcd8bb3ed" alt="novice-part05-jp image 2" width="1054" height="522" data-path="images/japanese-knowledge-base/novice-part05-jp/image-2.webp" />
</Frame>

上記のDestinationの一覧にあるディスティネーション以外にもCurlでのデータ書き込みをサポートしています。そちらについては、別のブログ「[Xplenty : Curl Functionを使ったデータ更新 （デモ動画あり）](/jp/etl/restapi-part06-jp)」で解説してますのでチェックしてみてください。

今回はDestinationコンポーネントの中でもAmazon RedshiftやBigQueryのような特定のDestinationに保存するものもありますが、DatabaseやStorageのように、さらにDestinationの対象を設定するものがあります。そこで、DatabaseとStorageについて詳しく見ていきましょう。

## 1. Databaseコンポーネント

この中でDatabaseを選択した場合は、さらに以下のリストからお好みのデータベースを選択可能です。

<Frame>
  <img src="https://mintcdn.com/integrateio/S5PjFuXd0nNm4BaF/images/japanese-knowledge-base/novice-part05-jp/image-3.webp?fit=max&auto=format&n=S5PjFuXd0nNm4BaF&q=85&s=a0f868e3e79ae1103e39e23e8858da75" alt="novice-part05-jp image 3" width="1053" height="624" data-path="images/japanese-knowledge-base/novice-part05-jp/image-3.webp" />
</Frame>

### データの更新方法が豊富

また、設定の詳細では、更新方法については、**追加のみ**、**上書き更新**、**差分更新**といったきめ細かいオプションを設定可能です。

<Frame>
  <img src="https://mintcdn.com/integrateio/S5PjFuXd0nNm4BaF/images/japanese-knowledge-base/novice-part05-jp/image-4.webp?fit=max&auto=format&n=S5PjFuXd0nNm4BaF&q=85&s=3a81a86016d4fb76742aef63af914938" alt="novice-part05-jp image 4" width="1056" height="829" data-path="images/japanese-knowledge-base/novice-part05-jp/image-4.webp" />
</Frame>

### 処理前と処理後にSQLを実行することが可能

Pre-action SQLとPost-action SQLでは、データをデータベースに書き込む直前もしくは直後のSQL処理を設定することが可能です。

この機能を使うことで、事前にテーブルを作成したり、あるテーブルを更新した後に、更新されたデータをもとに別のテーブルへデータを書き込んだりするのに利用することが可能です。

## 2. File Storageコンポーネント

File storageを選択した場合も同様に、以下のリストからお好みのストレージが選択可能です。

<Frame>
  <img src="https://mintcdn.com/integrateio/S5PjFuXd0nNm4BaF/images/japanese-knowledge-base/novice-part05-jp/image-5.webp?fit=max&auto=format&n=S5PjFuXd0nNm4BaF&q=85&s=35306eb4a1f839baa1bdc4d01ad70a10" alt="novice-part05-jp image 5" width="1055" height="647" data-path="images/japanese-knowledge-base/novice-part05-jp/image-5.webp" />
</Frame>

**保存時のオプションは以下の４つがあります**

* **Write all files directly and fail the job if target directory already exists**
  ファイルはターゲットディレクトリに直接書き込まれます。デフォルトでは、ターゲットディレクトリが既に存在する場合、ジョブは失敗します。変数を使用して、ジョブが実行されるたびに新しいディレクトリ名を動的に生成することができます (例: `/output/${_JOB_ID}`)。

<Frame>
  <img src="https://mintcdn.com/integrateio/S5PjFuXd0nNm4BaF/images/japanese-knowledge-base/novice-part05-jp/image-6.webp?fit=max&auto=format&n=S5PjFuXd0nNm4BaF&q=85&s=3c70fe83be66b428ee8f0c9ac9de2292" alt="novice-part05-jp image 6" width="1053" height="353" data-path="images/japanese-knowledge-base/novice-part05-jp/image-6.webp" />
</Frame>

* **Write all files directly and delete target directory if already exists**
  ファイルはターゲットディレクトリに直接書き込まれます。
  **注意：** 実行時に、対象ディレクトリが存在するかどうかを確認し、存在する場合は、対象ディレクトリを削除します。

* **Write all files directly and replace files in directory if they already exist**
  対象ディレクトリに直接ファイルを書き込みます。このオプションを選択した場合、実行先のディレクトリが存在していてもジョブは失敗せず、既存のディレクトリにファイルが書き込まれます。同名のファイルがディレクトリ内に存在する場合は上書きされます。ディレクトリにファイルを追加したい場合は、ジョブ実行毎に固有のファイルパターンを使用するように変更してください（例：ファイルのプレフィックスに変数`${_JOB_ID}`を使用する（下記参照））。
  **注意：** 対象ディレクトリはジョブ失敗時に削除されます。

* **Use intermediate storage and copy files to an existing directory in destination**
  ファイルは中間ストレージに書き込まれた後、コピー先のディレクトリにコピーされます。
  **注意：** このオプションを利用する場合、ターゲットディレクトリが存在することを確認してください。ディレクトリがない場合はエラーとなります。

## ヒント: ストレージ保存時のファイル名の指定について

Xplentyでファイルを出力時に、以下のように自動的に番号が付与される仕組みになっています。

<Frame>
  <img src="https://mintcdn.com/integrateio/S5PjFuXd0nNm4BaF/images/japanese-knowledge-base/novice-part05-jp/image-7.webp?fit=max&auto=format&n=S5PjFuXd0nNm4BaF&q=85&s=ffe32989fe5ad0bc7e8a733e2d56c74a" alt="novice-part05-jp image 7" width="1290" height="186" data-path="images/japanese-knowledge-base/novice-part05-jp/image-7.webp" />
</Frame>

このファイル名に自動的に付与される番号を回避し、希望通りにファイル名を設定する方法は以下の通りです。

1.File storageコンポーネントの設定画面にある「**Destination action**」で「**Use intermediate storage and copy files to an existing directory in destination**」を選択します。

<Frame>
  <img src="https://mintcdn.com/integrateio/S5PjFuXd0nNm4BaF/images/japanese-knowledge-base/novice-part05-jp/image-8.webp?fit=max&auto=format&n=S5PjFuXd0nNm4BaF&q=85&s=850aa27b9441d181ba6105802d13c462" alt="novice-part05-jp image 8" width="1053" height="517" data-path="images/japanese-knowledge-base/novice-part05-jp/image-8.webp" />
</Frame>

2.フォルダパス側の指定に保存したいファイル名を含めます。

<Frame>
  <img src="https://mintcdn.com/integrateio/S5PjFuXd0nNm4BaF/images/japanese-knowledge-base/novice-part05-jp/image-9.webp?fit=max&auto=format&n=S5PjFuXd0nNm4BaF&q=85&s=942ebfff604eee0dc2cb0f129edfdc0a" alt="novice-part05-jp image 9" width="1053" height="287" data-path="images/japanese-knowledge-base/novice-part05-jp/image-9.webp" />
</Frame>

3.意図したファイル名で指定したストレージのパスに出力されます。

<Frame>
  <img src="https://mintcdn.com/integrateio/S5PjFuXd0nNm4BaF/images/japanese-knowledge-base/novice-part05-jp/image-10.webp?fit=max&auto=format&n=S5PjFuXd0nNm4BaF&q=85&s=71f60d68b2508e58bbeed726bfc8eafb" alt="novice-part05-jp image 10" width="1192" height="264" data-path="images/japanese-knowledge-base/novice-part05-jp/image-10.webp" />
</Frame>

## File Storageコンポーネント：その他のTips

* ストレージを選択した場合、柔軟にファイルを保存するためのオプションが多く用意されています。詳細は「[ストレージサービス連携機能 : Shift-JISにも対応](https://www.xplenty.com/jp/blog/xplenty-storage-ja/)」で解説しています。

* Merge output to single file
  宛先ディレクトリに単一のファイルのみが書き込まれることを確認してください。特定のプラットフォームでのファイルサイズの制限は、ジョブに失敗する可能性があります。

<Frame>
  <img src="https://mintcdn.com/integrateio/S5PjFuXd0nNm4BaF/images/japanese-knowledge-base/novice-part05-jp/image-11.webp?fit=max&auto=format&n=S5PjFuXd0nNm4BaF&q=85&s=ba00fb0a91a0417ea7f02e47e3b36300" alt="novice-part05-jp image 11" width="1053" height="433" data-path="images/japanese-knowledge-base/novice-part05-jp/image-11.webp" />
</Frame>
