我正在尝试创建基于 CSV 文件的外部表。我的问题是,并非所有 CSV 文件都是相同的(其中一些文件缺少列),并且列的顺序并不总是相同。
问题是我是否可以让 Athena 按名称而不是按顺序解析列
不,athena 无法按名称而不是顺序解析列。数据的顺序应与表架构中定义的顺序完全相同。在将 CSV 写入 S3 之前,您需要预处理 CSV 并更改列顺序。
添加 aws athena 文档中的引用:
当您在 Athena 中创建新表架构时,Athena 会将该架构存储在数据目录中,并在您运行查询时使用它。
Athena 使用一种称为读取时架构的方法,这意味着在您执行查询时架构会投影到您的数据上。这消除了数据加载或转换的需要。
当您在 Athena 中创建数据库和表时,您只需描述架构以及表数据在 Amazon S3 中的位置以供读取时查询。因此,数据库和表的含义与传统关系数据库系统的含义略有不同,因为数据不与数据库和表的模式定义一起存储。