---
articleId: 5158328e-510a-4fd5-94be-cf064a908d27
slug: data-destination-redshift
title: 転送先 - Amazon Redshift
parentCategoryId: 03f04962-e96f-49cb-9c01-d84d025cc41a
languageCode: ja
---
## 概要
Amazon Redshiftへデータを転送する設定のDocsです。
:::(Info) (Amazon RedshiftとTROCCOの活用事例について)
TROCCOの製品サイトでは、お客さまの[導入事例](https://primenumber.com/cases/topic/all?industry=&tag=amazon-redshift)を紹介しております。
本Docsとあわせてご覧ください。
:::
## 設定項目
### STEP1 基本設定
| 項目名 | 必須 | デフォルト値 | 内容 |
| --- | --- | --- | --- |
| Amazon Redshift接続情報 | Yes | - | あらかじめ登録してある[Amazon Redshiftの接続情報](/docs/connection-configuration-redshift)から、今回の転送設定に必要な権限を持つものを選択します。 |
| データベース | Yes | - | 転送先のデータベース名を選択します。 |
| スキーマ | Yes | - | 転送先のスキーマ名を選択します。 |
| テーブル | Yes | - | 転送先のテーブル名を入力します。
対象テーブルが転送先のデータベース・スキーマ内に存在しない場合は、テーブルが自動的に作成されます。 |
| Amazon S3バケット | Yes | - | データ転送時に一時的にデータを保存するためのS3バケット名を指定します。
**バケット一覧を読み込む**を押すことで、一覧を読み込むこともできます。 |
| Amazon S3キープレフィックス | Yes | - | データ転送時に一時的にデータを保存するためのS3パス名を指定します。 |
| 転送モード | Yes | 追記 (`INSERT`) | 転送モードを選択します。
各モードについて、詳しくは後述の[転送モードについて](/docs/data-destination-redshift#転送モードについて)を参照ください。 |
### STEP1 詳細設定
**詳細設定**をクリックすると、設定項目が表示されます。
| 項目名 | 必須 | デフォルト値 | 内容 |
| --- | --- | --- | --- |
| バッチサイズ (KB) | Yes | 16,384 |バッチサイズを入力します。
転送実行時に`OutOfMemoryError`が発生した場合には、適宜バッチサイズを引き下げてください。|
### STEP2 出力オプション
| 項目名 | デフォルト値 | 詳細 |
| --- | --- | --- |
| テーブル制約 | - | CREATE TABLE文にテーブル制約を追加可能です。
`CREATE TABLE \ (\ , \ \, ... , \<テーブル制約\>) \<テーブルオプション\>` |
| テーブルオプション | - | CREATE TABLE文にテーブルオプションを追加可能です。
`CREATE TABLE \ (\ \, \ \, ... , \<テーブル制約\>) \<テーブルオプション\>` |
| 一時的にAmazon S3に保存されたファイルの削除 | する | - |
| IAMロール名 | - | AWSアクセスキー・AWSシークレットアクセスキーの代わりにIAMロールを使用可能です。 |
| 最大リトライ回数 | 12 | - |
| リトライ待ち時間(ミリ秒) | 1,000 | - |
| リトライ待ち時間の最大値(ミリ秒) | 1,800,000 | - |
| マージキーの設定 | - | 転送モードで`UPSERT (MERGE)`を選択したときに設定できます。
マージキー(主キー)扱いとする、値の重複がなく、NULL値も持たないカラムの名前を入力してください。 |
| デフォルトのタイムゾーン | UTC | timestamp形式のカラムがあった場合はタイムゾーンを指定可能です。 |
| カラム設定 | - | - |
| ロード前に実行するSQL | - | - |
| ロード後に実行するSQL | - | - |
:::(Info) (スキーマに関わる設定が適用される条件)
STEP2出力オプションの**カラム設定**の内容は、**テーブルを新規作成する**場合にのみ、適用されます。
具体的には、以下の状態でジョブ実行した際に適用されます。
- 転送先に対象となるテーブルが存在しない場合
- 転送モードで全件洗い替え (`REPLACE`)を選んでいる場合
- この場合、転送のたびに転送先テーブルのスキーマが更新されるため、カラム設定の内容は都度適用されます。
:::
## 補足事項
### 転送モードについて
以下の説明はいずれも、**転送先に対象となるテーブルがすでに存在する場合**の挙動となります。
転送先に対象となるテーブルが存在しない場合は、いずれのモードにおいても**テーブルを新規作成**します。
| 転送モード | スキーマ変更 | トランザクション | 挙動 | 補足 |
|----|----|----|----|----|
| 追記 (`INSERT`) | No | Yes | テーブルへの**追記**を以下の通り行います。- 一時テーブルを作成して、データを投入する
- 一時テーブルのデータを対象テーブルに`INSERT`する
| |
| 追記 (`INSERT DIRECT`) | No | **No** | テーブルの**追記**を以下の通り行います。- データを直接対象テーブルに`INSERT`する
| 追記 (`INSERT`)モードに比べて処理時間は短くなりますが、トランザクションは担保されません。そのため転送が途中で失敗した場合、途中まで追加された行が対象テーブルに残ることがあります。 |
| 全件洗い替え (`TRUNCATE INSERT`) | No | Yes | テーブルの**洗い替え**を以下の通り行います。- 一時テーブルを作成して、データを投入する
- 対象テーブルの実データを`DELETE`して、一時テーブルのデータを対象テーブルに`INSERT`する
| |
| 全件洗い替え (`REPLACE`) | **Yes** | Yes | テーブルの**洗い替え**を以下の通り行います。- 一時テーブルを作成して、データを投入する
- 対象テーブルそのものを`DROP`して、一時テーブル名を対象テーブル名に変更する
| 既存テーブルのスキーマは削除され、新しいテーブルのものに更新されます。 |
| `UPSERT (MERGE)` | No | Yes | テーブルへの**UPSERT**を以下の通り行います。- 一時テーブルを作成して、データを投入する
- 一時テーブルのデータを対象テーブルに`MERGE`する
| 転送データの各行に関して、マージキーの値が対象テーブルの該当列に存在した場合、その行は更新されます。存在しなかった場合、その行は追記されます。マージキーの値に重複があったりNULL値が含まれていたりする場合、正しく`UPSERT`されません。 |