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 在 external_location = 's3://aws-athena-query-results-<account>-<region>/<query-name-or-unsaved>/<year>/<month>/<date>/<query-id>/' 中存储 CTAS 查询结果,并且不再使用相同的路径。如果您手动指定了位置,请确保该 Amazon S3 位置没有任何数据。Athena 从不尝试删除数据。如果您要再次使用相同的位置,请手动清除数据,否则 CTAS 查询将失败。

如果将在其中运行查询的工作组使用强制查询结果位置配置,请不要为 CTAS 查询指定 external_location。在此例中,Athena 发出错误并使指定 external_location 的查询失败。例如,如果您强制工作组使用其自己的位置,则此查询将失败:CREATE TABLE <DB>.<TABLE1> WITH (format='Parquet', external_location='s3://my_test/test/') AS SELECT * FROM <DB>.<TABLE2> LIMIT 10;

要获取为工作组指定的结果位置,请查看工作组的详细信息

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 查询的示例