加载默认列值 - Amazon Redshift

加载默认列值

您可以选择在 COPY 命令中定义一个列列表。如果列列表忽略了表中的某个列,则 COPY 将用 CREATE TABLE 命令中指定的 DEFAULT 选项提供的值加载该列,或加载 NULL(如果未指定 DEFAULT 选项)。

如果 COPY 尝试将 NULL 分配到一个定义为 NOT NULL 的列,COPY 命令将失败。有关分配 DEFAULT 选项的信息,请参阅 CREATE TABLE

当从 Amazon S3 上的数据文件加载时,列列表中的列必须与数据文件中字段的顺序相同。如果数据文件中的某个字段在列列表中没有对应的列,COPY 命令将失败。

从 Amazon DynamoDB 表加载时,顺序并不重要。将弃用与 Amazon Redshift 表中的列不匹配的 Amazon DynamoDB 属性中的任何字段。

当使用 COPY 命令将 DEFAULT 值加载到表中时,将适用以下限制:

  • 如果 IDENTITY 列包含在列列表中,则还必须在 COPY 命令中指定 EXPLICIT_IDS 选项,否则 COPY 命令将失败。同样,如果列列表省略了 IDENTITY 列,并且指定了 EXPLICIT_IDS 选项,COPY 操作将失败。

  • 由于给定列的已计算 DEFAULT 表达式对所有已加载行是相同的,因此,使用 RANDOM() 函数的 DEFAULT 表达式会向所有行分配相同的值。

  • 包含 CURRENT_DATE 或 SYSDATE 的 DEFAULT 表达式将设置为当前事务的时间戳。

有关示例,请参阅 COPY 示例中的“从带有默认值的文件加载数据”。