デフォルトの列値をロードする - Amazon Redshift

デフォルトの列値をロードする

任意で COPY コマンドに列のリストを定義できます。このリストに含まれていないテーブルの列については、COPY を実行すると、CREATE TABLE コマンドで指定された DEFAULT オプションにより提供される値か、DEFAULT オプションが指定されていない場合は NULL がロードされます。

COPY を実行し、NOT NULL として定義されている列に NULL を割り当てようとすると、COPY コマンドは失敗します。DEFAULT オプションの割り当てに関する詳細は、「CREATE TABLE」を参照してください。

Amazon S3 のデータファイルからロードするとき、リストの列がデータファイルのフィールドと同じ順序になっている必要があります。リストに指定された列に該当するフィールドがデータファイルにない場合、COPY コマンドは失敗します。

Amazon DynamoDB テーブルからロードする場合、順序は関係ありません。Amazon Redshift テーブルの列に一致しない Amazon DynamoDB 属性のフィールドは破棄されます。

COPY コマンドを使って DEFAULT 値をテーブルにロードするとき、次の制限が適用されます。

  • IDENTITY 列がリストに含まれる場合、EXPLICIT_IDS オプションも COPY コマンドに指定する必要があります。指定しない場合、COPY コマンドは失敗します。同様に、IDENTITY 列をリストから除外し、EXPLICIT_IDS オプションを指定すると、COPY 操作は失敗します。

  • 指定の列に対して評価される DEFAULT 式はロードされるすべての行で同じであるため、RANDOM() 関数を使用する DEFAULT 式はすべての行に同じ値を割り当てます。

  • CURRENT_DATE または SYSDATE を含む DEFAULT 式は現在の処理のタイムスタンプに設定されます。

例えば、「COPY の例」の「デフォルト値を使用してファイルのデータをロードする」を参照してください。