列のマッピングオプション
デフォルトでは、COPY はデータファイルで発生したフィールドと同じ順序でターゲットテーブルの列に値を挿入します。デフォルトの列順序が機能しない場合は、列リストを指定するか、JSONPath 式を使用してソースデータフィールドをターゲット列にマッピングできます。
列リスト
ソースデータフィールドを特定のターゲット列にロードするには、列名のカンマ区切りリストを指定します。COPY ステートメントで列は任意の順序に指定できますが、Amazon S3 バケットなどにあるフラットファイルからロードする場合、ソースデータの順序に一致する必要があります。
Amazon DynamoDB テーブルからロードする場合、順序は関係ありません。COPY コマンドは、DynamoDB テーブルから取得した項目の属性名と、Amazon Redshift テーブルの列名を一致させます。詳細については、「Amazon DynamoDB テーブルからのデータのロード」を参照してください。
列リストの形式は次のとおりです。
COPY tablename (column1 [,column2, ...])
ターゲットテーブルの列が列リストから削除された場合は、COPY はターゲット列の DEFAULT 式をロードします。
ターゲット列にデフォルトがない場合は、COPY は NULL をロードします。
COPY を実行し、NOT NULL として定義されている列に NULL を割り当てようとすると、COPY コマンドは失敗します。
列リストに IDENTITY 列が含まれている場合、EXPLICIT_IDS も指定する必要があります。IDENTITY 列を省略した場合、EXPLICIT_IDS は指定できません。列リストを指定しない場合、コマンドは、完全で順序正しい列リストが指定されたように動作します。EXPLICIT_IDS も指定しなかった場合、IDENTITY 列は省略されます。
列がGENERATED BY DEFAULT AS IDENTITYで定義されている場合は、コピーできます。値は、指定した値で生成または更新されます。EXPLICIT_IDS オプションは必須ではありません。COPY は IDENTITY のハイウォーターマークを更新しません。詳細については、「GENERATED BY DEFAULT AS IDENTITY」を参照してください。
JSONPaths ファイル
JSON または Avro 形式からデータファイルをロードする場合、COPY は JSON または Avro ソースデータのデータ要素をターゲットテーブルの列に自動的にマッピングします。Avro スキーマのフィールド名をターゲットテーブルまたは列リストの列名に一致させることで、行われます。
場合によっては、列名とフィールド名が一致しないか、データ階層のより深いレベルにマッピングする必要があります。このような場合、明示的に列に JSON または Avro のデータ要素をマッピングするには、JSONPaths ファイルを使用できます。
詳細については、「JSONPaths ファイル」を参照してください。