CREATE TABLE AS - Amazon Athena

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

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 查询的示例,请参阅以下资源。