Verwenden Sie parametrisierte Abfragen - Amazon Athena

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Verwenden Sie parametrisierte Abfragen

Sie können parametrisierte Athena-Abfragen verwenden, um dieselbe Abfrage mit unterschiedlichen Parameterwerten zur Ausführungszeit erneut auszuführen und Injection-Angriffe zu verhindern. SQL In Athena können parametrisierte Abfragen die Form von Ausführungsparametern in beliebigen DML Abfragen oder SQL vorbereiteten Anweisungen annehmen.

  • Abfragen mit Ausführungsparametern können in einem einzigen Schritt durchgeführt werden und sind nicht arbeitsgruppenspezifisch. Sie platzieren in jeder DML Abfrage Fragezeichen 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: PREPARE und. EXECUTE Zunächst definieren Sie die Parameter in der PREPARE-Anweisung. Dann führen Sie eine EXECUTE-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- und UNLOAD-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 der WHERE-Klausel platziert werden. Syntax wie SELECT ? FROM table wird 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 Zeichenketten behandelt werden, müssen sie in einfache Anführungszeichen und nicht in doppelte Anführungszeichen gesetzt 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 des date-Typs verfügen, den Sie in einer Abfrage parametrisiert haben, und Sie das Datum 2014-07-05 abfragen möchten, wird CAST('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.

  • IAMBerechtigungen für vorbereitete Anweisungen sind erforderlich. Weitere Informationen finden Sie unter Zugriff auf vorbereitete Kontoauszüge konfigurieren.

  • Abfragen mit Ausführungsparametern in der Athena-Konsole sind auf maximal 25 Fragezeichen beschränkt.