在表的开头或中间添加新列 - Amazon Athena

在表的开头或中间添加新列

添加列是最常见的架构变化之一。例如,您可以添加新列,用新的数据来充实表。或者,如果一个现有列的源发生了变化,您可以添加一个新列,同时保留该列表的前一版本,以调整依赖它们的应用程序。

要将列添加到表的开头或中间,并继续针对现有表运行查询,请使用 AVRO、JSON 以及 Parquet 和 ORC(如果它们的 SerDe 属性设为按名称读取)。有关信息,请参阅了解 Apache ORC 和 Apache Parquet 的索引访问权限

不要在 CSV 和 TSV 表的开头或中间添加列,因为这些格式取决于排序。如果在这些情况下添加列,分区架构改变将导致架构不匹配的错误。

以下示例创建了一个新表,该表基于 JSON 数据在表的中间添加了一个 o_comment 列。

CREATE EXTERNAL TABLE orders_json_column_addition ( `o_orderkey` int, `o_custkey` int, `o_orderstatus` string, `o_comment` string, `o_totalprice` double, `o_orderdate` string, `o_orderpriority` string, `o_clerk` string, `o_shippriority` int, ) ROW FORMAT SERDE 'org.openx.data.jsonserde.JsonSerDe' LOCATION 's3://amzn-s3-demo-bucket/orders_json/';