Amazon Redshift
数据库开发人员指南 (API Version 2012-12-01)
AWS 服务或AWS文档中描述的功能,可能因地区/位置而异。请点击 Amazon AWS 入门,可查看中国地区的具体差异

列映射选项

默认情况下,COPY 会按字段在数据文件中出现的相同顺序将值插入到目标表的列中。如果默认列顺序不起作用,则可以指定一个列列表或使用 JSONPath 表达式将源数据字段映射到目标列。

列列表

您可以指定列名称的逗号分隔列表以将源数据字段加载到特定目标列中。这些列在 COPY 语句中可以采用任何顺序,但是,当从平面文件加载时(如在 Amazon S3 存储桶中),它们的顺序必须与源数据的顺序一致。

从 Amazon DynamoDB 表加载时,顺序并不重要。COPY 命令将从 DynamoDB 表中检索到的项中的属性名称与 Amazon Redshift 表中的列名进行匹配。有关更多信息,请参阅 从 Amazon DynamoDB 表加载数据

列列表的格式如下所示。

Copy
COPY tablename (column1 [,column2, ...])

如果列列表省略了目标表中的列,则 COPY 将加载目标列的 DEFAULT 表达式。

如果目标列没有默认值,则 COPY 将尝试加载 NULL。

如果 COPY 尝试将 NULL 分配到一个定义为 NOT NULL 的列,COPY 命令将失败。

如果 IDENTITY 列包含在列列表中,则还必须指定 EXPLICIT_IDS;如果省略了 IDENTITY 列,则无法指定 EXPLICIT_IDS。如果未指定任何列列表,则该命令将如同指定了一个完整、有序的列列表一样来执行,如果也未指定 EXPLICIT_IDS,则会省略 IDENTITY 列。

JSONPaths 文件

当从 JSON 或 Avro 格式的数据文件加载时,COPY 会通过以下方式将 JSON 或 Avro 源数据中的数据元素自动映射到目标表中的列:将 Avro schema 中的字段名称与目标表或列列表中的列名称匹配。

如果列名称与字段名称不匹配,或要映射到数据层次结构中的更深层次,则可以使用 JSONPaths 文件将 JSON 或 Avro 数据元素显式映射到列。

有关更多信息,请参阅 JSONPaths file

本页内容: