Utiliser des requêtes paramétrées - Amazon Athena

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Utiliser des requêtes paramétrées

Vous pouvez utiliser les requêtes paramétrées Athena pour réexécuter la même requête avec des valeurs de paramètres différentes au moment de l'exécution et pour empêcher les attaques par injection. SQL Dans Athena, les requêtes paramétrées peuvent prendre la forme de paramètres d'exécution dans n'importe quelle DML requête ou d'instructions préparées. SQL

  • Les requêtes avec des paramètres d'exécution peuvent être effectuées en une seule étape et ne sont pas spécifiques à un groupe de travail. Vous placez des points d'interrogation dans n'importe quelle DML requête pour les valeurs que vous souhaitez paramétrer. Lorsque vous exécutez la requête, vous déclarez les valeurs des paramètres d'exécution de manière séquentielle. La déclaration des paramètres et l'attribution de valeurs pour les paramètres peuvent être effectuées dans la même requête, mais de manière découplée. Contrairement aux instructions préparées, vous pouvez sélectionner le groupe de travail lorsque vous soumettez une requête avec des paramètres d'exécution.

  • Les déclarations préparées nécessitent deux SQL déclarations distinctes : PREPARE etEXECUTE. Tout d'abord, vous définissez les paramètres dans l'instruction PREPARE. Ensuite, vous lancez une instruction EXECUTE qui fournit les valeurs des paramètres que vous avez définis. Les instructions préparées sont spécifiques au groupe de travail ; vous ne pouvez pas les exécuter en dehors du contexte du groupe de travail auquel elles appartiennent.

Considérations et restrictions

  • Les requêtes paramétrées sont prises en charge dans la version 2 du moteur Athena et les versions ultérieures. Pour plus d'informations sur les versions du moteur Athena, voir Gestion des versions du moteur Athena.

  • Actuellement, les requêtes paramétrées ne sont prises en charge que pour les instructions SELECT, INSERT INTO, CTAS et UNLOAD.

  • Dans les requêtes paramétrées, les paramètres sont positionnels et sont désignés par ?. Les paramètres se voient attribuer des valeurs en fonction de leur ordre dans la requête. Les paramètres nommés ne sont pas pris en charge.

  • Actuellement, les paramètres ? ne peuvent être placés que dans la clause WHERE. Les syntaxes comme SELECT ? FROM table ne sont pas prises en charge.

  • Les paramètres de point d'interrogation ne peuvent pas être placés entre guillemets doubles ou simples (c'est-à-dire, '?' et "?" ne sont pas des syntaxes valides).

  • Pour que les paramètres SQL d'exécution soient traités comme des chaînes, ils doivent être placés entre guillemets simples plutôt que entre guillemets doubles.

  • Si nécessaire, vous pouvez utiliser la fonction CAST lorsque vous entrez la valeur d'un terme paramétré. Par exemple, si vous avez une colonne du type date que vous avez paramétré dans une requête et que vous souhaitez rechercher la date 2014-07-05, la saisie de CAST('2014-07-05' AS DATE) pour la valeur du paramètre renverra le résultat.

  • Les instructions préparées sont spécifiques au groupe de travail, et les noms des instructions préparées doivent être uniques au sein du groupe de travail.

  • IAMdes autorisations sont requises pour les relevés préparés. Pour de plus amples informations, veuillez consulter Configuration de l'accès aux relevés préparés.

  • Les requêtes avec des paramètres d'exécution dans la console Athena sont limitées à un maximum de 25 points d'interrogation.