--- 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 | テーブルへの**追記**を以下の通り行います。
  1. 一時テーブルを作成して、データを投入する
  2. 一時テーブルのデータを対象テーブルに`INSERT`する
| | | 追記 (`INSERT DIRECT`) | No | **No** | テーブルの**追記**を以下の通り行います。
  1. データを直接対象テーブルに`INSERT`する
|
  • 追記 (`INSERT`)モードに比べて処理時間は短くなりますが、トランザクションは担保されません。
  • そのため転送が途中で失敗した場合、途中まで追加された行が対象テーブルに残ることがあります。
  • | | 全件洗い替え (`TRUNCATE INSERT`) | No | Yes | テーブルの**洗い替え**を以下の通り行います。
    1. 一時テーブルを作成して、データを投入する
    2. 対象テーブルの実データを`DELETE`して、一時テーブルのデータを対象テーブルに`INSERT`する
    | | | 全件洗い替え (`REPLACE`) | **Yes** | Yes | テーブルの**洗い替え**を以下の通り行います。
    1. 一時テーブルを作成して、データを投入する
    2. 対象テーブルそのものを`DROP`して、一時テーブル名を対象テーブル名に変更する
    |
  • 既存テーブルのスキーマは削除され、新しいテーブルのものに更新されます。
  • | | `UPSERT (MERGE)` | No | Yes | テーブルへの**UPSERT**を以下の通り行います。
    1. 一時テーブルを作成して、データを投入する
    2. 一時テーブルのデータを対象テーブルに`MERGE`する
    |
  • 転送データの各行に関して、マージキーの値が対象テーブルの該当列に存在した場合、その行は更新されます。存在しなかった場合、その行は追記されます。
  • マージキーの値に重複があったりNULL値が含まれていたりする場合、正しく`UPSERT`されません。
  • |