amazon-web-services - 在 Athena 中执行命名查询
问题描述
我们想使用aws 的 javascript sdk在 Athena 中执行参数化查询。
似乎 Athena 的命名查询可能是这样做的方法,但文档似乎非常难以理解如何去做。
如果有人可以帮助我们执行以下操作,那就太好了
- 在雅典娜中避免sql注入的推荐方法是什么?
- 创建一个参数化查询,例如
SELECT c FROM Country c WHERE c.name = :name
- 传递
name
参数的值 - 执行这个查询
解决方案
编辑:这个答案是在 Athena 支持prepared statements之前写的。
不幸的是,命名查询是 Athena 的一个奇怪功能,它对任何事情都没有真正的用处。
Athena 不像许多 RDBMS 那样支持准备好的语句。有一些 SQL 库支持在客户端进行参数扩展——我有过使用 Sequel for Ruby 的经验,遗憾的是我不能给你关于 JavaScript 的建议。
然而,在 Athena 的 SQL 方言中转义并不是很复杂。在标识符中,双引号需要转义为两个双引号,而在文字字符串中,单引号需要转义为单引号。其他数据类型只需要干净,例如整数只需要数字。
另外,请记住,在 Athena 中,SQL 注入的危险与在 RDBMS 中不同:Athena 无法删除您的数据。如果您正确设置 IAM 权限,则用户甚至无法删除表,即使您出于某种原因使用允许删除表的用户运行查询,表也只是元数据,可以轻松地再次设置。
推荐阅读
- qt - GStreamer / QML 应用程序中的多个 4K 视频 = 黑色闪烁
- swift3 - Cloud Kit如何在出错时重新获取记录
- sql - 取决于条件的所有可能的项目组合
- c# - 如何通过输入天数获得下一个工作日?
- nginx - 无法在 nginx 上使用散景打开 websocket
- yaml - 如何在 userdata cloudformation 中编写以下命令?
- python - 在从 csv 中提取数据并写入文本文件时需要帮助
- node.js - Node/Express - 如何更改默认根 URL
- r - 删除尾随空格并合并 R 中可能重复的因素
- npm - 解决 npm shrinkwrap peer 无效依赖