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

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

CREATE TABLE AS

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

有关CREATE TABLE AS在此参考主题的范围之外,请参阅从查询结果创建表 (CTAS).

Synopsis

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

其中:

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

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

查询

ASELECT查询,用于创建新表。

重要

如果您计划创建包含分区的查询,请指定 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 = ARRAY[ 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 = ',')。目前,CTAS 查询不支持多字符字段分隔符。如果您未指定字段分隔符,则默认使用 \001

Examples

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