Usar consultas parametrizadas
É possível utilizar consultas parametrizadas do Athena para repetir a execução da mesma consulta com valores de parâmetros diferentes no momento da execução e ajudar a evitar ataques de injeção de SQL. No Athena, consultas parametrizadas podem assumir a forma de parâmetros de execução em qualquer consulta DML ou instruções preparadas para SQL.
-
Consultas com parâmetros de execução podem ser feitas em uma única etapa e não são específicas para um grupo de trabalho. Coloque pontos de interrogação em qualquer consulta DML para os valores que você deseja parametrizar. Ao executar a consulta, declare os valores do parâmetro de execução sequencialmente. A declaração de parâmetros e a atribuição de valores para esses parâmetros podem ser feitas na mesma consulta, mas de maneira dissociada. Ao contrário de instruções preparadas, é possível selecionar o grupo de trabalho ao enviar uma consulta com parâmetros de execução.
-
Instruções preparadas exigem duas instruções SQL separadas:
PREPARE
eEXECUTE
. Primeiro, você define os parâmetros na instruçãoPREPARE
. Em seguida, executa uma instruçãoEXECUTE
que fornece os valores dos parâmetros definidos. Instruções preparadas são específicas de um grupo de trabalho, ou seja, não podem ser executadas fora do contexto do grupo de trabalho ao qual pertencem.
Considerações e limitações
-
Há compatibilidade com consultas parametrizadas no mecanismo do Athena versão 2 e versões posteriores. Para obter informações sobre as versões do mecanismo do Athena, consulte Versionamento do mecanismo do Athena.
-
Atualmente, as consultas parametrizadas são aceitas apenas nas instruções
SELECT
,INSERT INTO
,CTAS
eUNLOAD
. -
Em consultas parametrizadas, parâmetros são posicionais e representados por
?
. Parâmetros recebem valores de acordo com sua ordem na consulta. Não há suporte para parâmetros nomeados. -
No momento, parâmetros
?
podem ser inseridos somente na cláusulaWHERE
. Não há suporte para a sintaxe do tipoSELECT ? FROM table
. -
Parâmetros de ponto de interrogação não podem ser inseridos entre aspas duplas ou simples (ou seja,
'?'
e"?"
não são uma sintaxe válida). -
Para que os parâmetros de execução do SQL sejam tratados como strings, eles devem estar entre aspas simples em vez de aspas duplas.
-
Se necessário, você pode usar a função
CAST
ao inserir um valor para um termo parametrizado. Por exemplo, se você tiver uma coluna do tipodate
parametrizada em uma consulta e quiser consultar a data2014-07-05
, inserirCAST('2014-07-05' AS DATE)
como valor do parâmetro retornará o resultado. -
Instruções preparadas são específicas de um grupo de trabalho, e seus nomes devem ser exclusivos no grupo de trabalho.
-
São necessárias permissões do IAM para as instruções preparadas. Para ter mais informações, consulte Configurar o acesso a instruções preparadas.
-
Consultas com parâmetros de execução no console do Athena estão limitadas a um máximo de 25 pontos de interrogação.