CREATE TABLE AS - Amazon Athena
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

如果我们为英文版本指南提供翻译,那么如果存在任何冲突,将以英文版本指南为准。在提供翻译时使用机器翻译。

CREATE TABLE AS

创建新表,使用 SELECT 查询的结果填充该表。要创建空表,请使用 CREATE TABLE

摘要

CREATE TABLE table_name [ WITH ( property_name = expression [, ...] ) ] AS query [ WITH [ NO ] DATA ]

其中:

WITH ( property_name = expression [, ...] )

可选 CTAS 表属性的列表,其中一些属性特定于数据存储格式。请参阅 CTAS 表属性

query

用于创建新表的 SELECT 查询。

重要

如果您计划创建包含分区的查询,请指定 SELECT 语句的列列表中最后一个分区列的名称。

[ WITH [ NO ] DATA ]

如果使用 WITH NO DATA,则将创建与原始表具有相同架构的新空表。

CTAS 表属性

Athena 中的每个 CTAS 表具有可选的 CTAS 表属性列表,您可以使用 WITH (property_name = expression [, ...] ) 指定。有关使用这些参数的信息,请参阅 CTAS 查询的示例

WITH (property_name = expression [, ...], )
external_location = [location]

可选。Athena 在 Amazon S3 中保存您的 CTAS 查询的位置,如以下示例所示:

WITH (external_location ='s3://my-bucket/tables/parquet_table/')

Athena 不会对查询结果使用同一路径两次。如果您手动指定了位置,请确保您指定的 Amazon S3 位置没有任何数据。Athena 从不尝试删除数据。如果您要再次使用相同的位置,请手动删除数据,否则 CTAS 查询将失败。

如果您运行的 CTAS 查询在工作组中指定一个强制实施查询结果位置external_location,则此查询将失败,并且会显示一条错误消息。要查看为工作组指定的查询结果位置, 请参阅工作组的详细信息

如果您的工作组覆盖查询结果位置的客户端设置,则 Athena 会在以下位置创建表:

s3://<workgroup-query-results-location>/tables/<query-id>/

如果您未使用 external_location 属性指定位置,并且工作组未覆盖客户端设置,则 Athena 将使用查询结果位置的客户端设置在以下位置创建表:

s3://<query-results-location-setting>/<Unsaved-or-query-name>/<year>/<month/<date>/tables/<query-id>/
format = [format]

CTAS 查询结果的数据格式,例如 ORCPARQUETAVROJSONTEXTFILE。例如:WITH (format = 'PARQUET')。如果忽略,则默认使用 PARQUET。此参数的名称 format 必须以小写列出,否则 CTAS 查询将失败。

partitioned_by = ARRAY( [col_name,…])

可选。CTAS 表进行分区所依据的列的数组列表。确认分区列的名称在 SELECT 语句的列列表中最后列出。

bucketed_by( [bucket_name,…])

用于分桶存储数据的存储桶数组列表。如果省略,则 Athena 在此查询中不会分桶存储数据。

bucket_count = [int]

用于分桶存储数据的存储桶编号。如果省略,Athena 不分桶存储数据。

orc_compression = [format]

用于 ORC 数据的压缩类型。例如:WITH (orc_compression = 'ZLIB')。如果省略,则默认情况下为 ORC 和 CTAS 支持的其他数据存储格式使用 GZIP 压缩。

parquet_compression = [format]

用于 Parquet 数据的压缩类型。例如:WITH (parquet_compression = 'SNAPPY')。如果省略,则默认情况下为 Parquet 和 CTAS 支持的其他数据存储格式使用 GZIP 压缩。

field_delimiter = [delimiter]

(可选)特定于基于文本的数据存储格式。CSV、TSV 和文本文件中文件的字段分隔符。例如:WITH (field_delimiter = ',')。如果您未指定字段分隔符,则默认使用 \001

示例

有关 CTAS 查询的示例,请参阅以下资源。