我们能否使用SQL查询在AWS Athena中向现有表添加列?

3

我在AWS Athena中有一个包含2条记录的表。是否有一种使用SQL查询向表中插入新列的方法?


2
请查看文档:https://docs.aws.amazon.com/athena/latest/ug/types-of-updates.html - Tim Biegeleisen
2个回答

5

您可以在Athena文档中找到有关向表中添加列的更多信息。

或者您可以使用CTAS方式。

例如,您有一个表:

CREATE EXTERNAL TABLE sample_test(
  id string)
LOCATION
  's3://bucket/path'

你可以使用以下查询语句从 sample_test 表中创建另一个表:

CREATE TABLE new_test
AS 
SELECT *, 'new' AS new_col FROM sample_test

您可以在AS后使用任何可用的查询。

1
这里已经为创建的列new_col赋值“new”给了2条记录。是否可以为不同的记录赋予不同的值来创建列new_col?非常感谢。 - VarunKumar
1
@VarunKumar 是的,你可以将当前表与另一个表连接。在 AS 后面,你可以编写任何带有 SELECT 的 SQL 查询。 - Kamrus
我有两条记录,每条记录都有一个唯一的ID。对于这两条记录中的每一条,我想为新创建的列赋予不同的值。但是我无法得到相应的SQL查询语句。 - VarunKumar
你建议使用内连接吗? - VarunKumar
1
是的,您可以使用内部连接或左连接来完成。创建一个具有2列和2个记录的新表,其中第一列具有旧值,第二列具有新值,然后将您的表与此新表在第一列上连接,然后您可以删除第一列。 - Kamrus

1
这篇文章主要是为像我一样的未来读者提供帮助,我曾经为Hive表中的AVRO数据而苦苦挣扎,如果你不想创建新表,即更新现有表的模式,则使用“添加列”可以在csv中运行,但对于Hive + AVRO则不行。对于Hive + AVRO,要在分区列之前在末尾添加列,解决方案可在此link找到。然而,需要注意几点:我们需要将完整模式传递给literal属性,而不仅仅是更改;并且(不确定为什么),我们必须按相同顺序更改Hive表的所有三个内容 - 1.使用add columns添加列2.set tblproperties和3.set serdeproperties。希望这能帮助到某些人。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接