Parametrisierte Abfragen verwenden
Sie können parametrisierte Athena-Abfragen verwenden, um dieselbe Abfrage mit unterschiedlichen Parameterwerten zur Ausführungszeit erneut auszuführen und SQL-Injection-Angriffe zu verhindern. In Athena können parametrisierte Abfragen in beliebigen DML-Abfragen oder vorbereiteten SQL-Anweisungen die Form von Ausführungsparametern annehmen.
-
Abfragen mit Ausführungsparametern können in einem einzigen Schritt durchgeführt werden und sind nicht arbeitsgruppenspezifisch. Sie platzieren Fragezeichen in jeder DML-Abfrage für die Werte, die Sie parametrisieren möchten. Wenn Sie die Abfrage ausführen, deklarieren Sie die Werte der Ausführungsparameter sequenziell. Die Deklaration von Parametern und die Zuweisung von Werten für die Parameter können in derselben Abfrage erfolgen, jedoch entkoppelt. Im Gegensatz zu vorbereiteten Anweisungen können Sie die Arbeitsgruppe auswählen, wenn Sie eine Abfrage mit Ausführungsparametern senden.
-
Vorbereitete Anweisungen erfordern zwei separate SQL-Anweisungen:
PREPAREundEXECUTE. Zunächst definieren Sie die Parameter in derPREPARE-Anweisung. Dann führen Sie eineEXECUTE-Anweisung aus, die Werte für die von Ihnen definierten Parameter bereitstellt. Vorbereitete Anweisungen sind arbeitsgruppenspezifisch. Sie können sie nicht außerhalb des Kontextes der Arbeitsgruppe, zu der sie gehören, ausführen.
Überlegungen und Einschränkungen
-
Parametrisierte Abfragen werden in Athena-Engine-Version 2 und höheren Versionen unterstützt. Weitere Informationen über Athena-Engine-Versionen finden Sie unter Athena-Engine-Versionierung.
-
Derzeit werden parametrisierte Abfragen nur für
SELECT-,INSERT INTO-,CTAS- undUNLOAD-Anweisungen. -
In parametrisierten Abfragen sind Parameter positionell und werden mit
?angegeben. Parametern werden Werte nach ihrer Reihenfolge in der Abfrage zugewiesen. Benannte Parameter werden nicht unterstützt. -
Derzeit können
?-Parameter nur in derWHERE-Klausel platziert werden. Syntax wieSELECT ? FROM tablewird nicht unterstützt. -
Fragezeichen-Parameter können nicht in doppelte oder einfache Anführungszeichen gesetzt werden (d. h.
'?'und"?"sind keine gültige Syntax). -
Damit SQL-Ausführungsparameter als Zeichenfolgen behandelt werden, müssen sie in einfache Anführungszeichen und nicht in doppelte Anführungszeichen eingeschlossen werden.
-
Bei Bedarf können Sie die
CAST-Funktion verwenden, wenn Sie einen Wert für einen parametrisierten Begriff eingeben. Wenn Sie beispielsweise über eine Spalte desdate-Typs verfügen, den Sie in einer Abfrage parametrisiert haben, und Sie das Datum2014-07-05abfragen möchten, wirdCAST('2014-07-05' AS DATE)bei Eingabe des Parameterwerts das Ergebnis zurückgegeben. -
Vorbereitete Anweisungen sind arbeitsgruppenspezifisch und die Namen vorbereiteter Anweisungen müssen innerhalb der Arbeitsgruppe eindeutig sein.
-
IAM-Berechtigungen für vorbereitete Anweisungen sind erforderlich. Weitere Informationen finden Sie unter Zugriff auf vorbereitete Anweisungen konfigurieren.
-
Abfragen mit Ausführungsparametern in der Athena-Konsole sind auf maximal 25 Fragezeichen beschränkt.