首页 > 解决方案 > 在 Athena 中执行命名查询

问题描述

我们想使用aws 的 javascript sdk在 Athena 中执行参数化查询。

似乎 Athena 的命名查询可能是这样做的方法,但文档似乎非常难以理解如何去做。

如果有人可以帮助我们执行以下操作,那就太好了

标签: amazon-web-servicessql-injectionamazon-athenanamed-query

解决方案


编辑:这个答案是在 Athena 支持prepared statements之前写的。

不幸的是,命名查询是 Athena 的一个奇怪功能,它对任何事情都没有真正的用处。

Athena 不像许多 RDBMS 那样支持准备好的语句。有一些 SQL 库支持在客户端进行参数扩展——我有过使用 Sequel for Ruby 的经验,遗憾的是我不能给你关于 JavaScript 的建议。

然而,在 Athena 的 SQL 方言中转义并不是很复杂。在标识符中,双引号需要转义为两个双引号,而在文字字符串中,单引号需要转义为单引号。其他数据类型只需要干净,例如整数只需要数字。

另外,请记住,在 Athena 中,SQL 注入的危险与在 RDBMS 中不同:Athena 无法删除您的数据。如果您正确设置 IAM 权限,则用户甚至无法删除表,即使您出于某种原因使用允许删除表的用户运行查询,表也只是元数据,可以轻松地再次设置。


推荐阅读