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.
UNLOAD
Schreibt Abfrageergebnisse aus einer SELECT
-Anweisung in das angegebene Datenformat. Zu den unterstützten Formaten UNLOAD
gehören Apache ParquetORC, Apache Avro undJSON. CSVist das einzige Ausgabeformat, das vom SELECT
Befehl Athena unterstützt wird, aber Sie können den UNLOAD
Befehl, der eine Vielzahl von Ausgabeformaten unterstützt, verwenden, um Ihre SELECT
Abfrage einzuschließen und ihre Ausgabe in eines der unterstützten Formate umzuschreiben. UNLOAD
Sie können zwar die CREATE TABLE AS
(CTAS) -Anweisung verwenden, um Daten in anderen Formaten als auszugebenCSV, CTAS Anweisungen erfordern jedoch die Erstellung einer Tabelle in Athena. Die UNLOAD
Anweisung ist nützlich, wenn Sie die Ergebnisse einer SELECT
Abfrage in einem anderen CSV Format ausgeben möchten, aber die zugehörige Tabelle nicht benötigen. In einer nachgelagerten Anwendung müssen beispielsweise die Ergebnisse einer SELECT
Abfrage im JSON Format vorliegen, sodass Parquet oder ORC Parquet einen Leistungsvorteil bietet, als CSV wenn Sie beabsichtigen, die Ergebnisse der SELECT
Abfrage für zusätzliche Analysen zu verwenden.
Überlegungen und Einschränkungen
Beachten Sie bei der Verwendung der UNLOAD
-Anweisung in Athena die folgenden Punkte:
-
Keine globale Reihenfolge von Dateien –
UNLOAD
-Ergebnisse werden parallel in mehrere Dateien geschrieben. Wenn dieSELECT
-Abfrage in derUNLOAD
-Anweisung eine Sortierreihenfolge angibt, wird der Inhalt jeder Datei sortiert, aber die Dateien werden nicht relativ zueinander sortiert. -
Verwaiste Daten nicht gelöscht – Im Falle eines Fehlers versucht Athena nicht, verwaiste Daten zu löschen. Dieses Verhalten entspricht dem Verhalten von
INSERT INTO
Anweisungen für CTAS und. -
Maximale Partitionen – Die maximale Anzahl von Partitionen, die mit
UNLOAD
verwendet werden können, beträgt 100. -
Metadaten- und Manifestdateien– Athena generiert für jede
UNLOAD
-Abfrage eine Metadatendatei und eine Datenmanifestdatei. Das Manifest verfolgt die Dateien, die die Abfrage geschrieben hat. Beide Dateien werden in Ihrem Athena-Abfrageergebnisspeicherort in Amazon S3 gespeichert. Weitere Informationen finden Sie unter Identifizieren Sie die Ausgabedateien der Abfrage. -
Verschlüsselung –
UNLOAD
-Ausgabedateien werden gemäß der für Amazon S3 verwendeten Verschlüsselungskonfiguration verschlüsselt. Um die Verschlüsselungskonfiguration für die Verschlüsselung IhresUNLOAD
Ergebnisses einzurichten, können Sie den EncryptionConfiguration APIverwenden. -
Vorbereitete Anweisungen –
UNLOAD
kann mit vorbereiteten Anweisungen verwendet werden. Informationen zu vorbereiteten Anweisungen in Athena finden Sie unter Verwenden Sie parametrisierte Abfragen. -
Dienstkontingente —
UNLOAD
verwendet DML Abfragekontingente. Kontigentinformationen finden Sie unter Service Quotas. -
Erwarteter Bucket-Eigentümer – Die Einstellung für den erwarteten Bucket-Eigentümer gilt nicht für den Amazon-S3-Speicherort, der in der
UNLOAD
-Abfrage angegeben wurde. Die erwartete Bucket-Eigentümereinstellung gilt nur für den Amazon-S3-Ausgabespeicherort, den Sie für Athena-Abfrageergebnisse angeben. Weitere Informationen finden Sie unter Geben Sie mithilfe der Athena-Konsole einen Speicherort für Abfrageergebnisse an.
Syntax
Die UNLOAD
-Anweisung verwendet die folgende Syntax.
UNLOAD (SELECT
col_name
[, ...] FROMold_table
) TO 's3://amzn-s3-demo-bucket/my_folder
/' WITH (property_name
= 'expression
' [, ...] )
Außer beim Schreiben in Partitionen muss das TO
Ziel einen Speicherort in Amazon S3 angeben, der keine Daten enthält. Bevor die UNLOAD
-Abfrage in den angegebenen Speicherort schreibt, überprüft sie, ob der Bucket-Speicherort leer ist. Da UNLOAD
keine Daten an den angegebenen Speicherort schreibt, wenn der Speicherort bereits Daten enthält, überschreibt UNLOAD
keine vorhandenen Daten. Um einen Bucket-Speicherort als Ziel für UNLOAD
wiederzuverwenden, löschen Sie die Daten am Bucket-Speicherort und führen Sie die Abfrage dann erneut aus.
Beachten Sie, dass dieses Verhalten beim UNLOAD
Schreiben in Partitionen anders ist. Wenn Sie dieselbe UNLOAD
Abfrage mehrmals ausführen, die dieselbe SELECT
Anweisung, denselben TO
Speicherort und dieselben Partitionen hat, entlädt jede UNLOAD
Abfrage die Daten an dem angegebenen Speicherort und den angegebenen Partitionen in Amazon S3.
Parameter
Mögliche Werte für property_name
lauten wie folgt.
- format = '
file_format
' -
Erforderlich Gibt das Dateiformat der Ausgabe an. Mögliche Werte für
file_format
sindORC
,PARQUET
AVRO
,JSON
, oderTEXTFILE
. - Komprimierung = '
compression_format
' -
Optional. Diese Option ist spezifisch für die Formate ORC und Parquet. Für ORC ist
zlib
die Standardeinstellung und für Parquet ist die Standardeinstellunggzip
. Informationen über unterstützte Komprimierungsformate finden Sie unter Unterstützung der Athena-Komprimierung.Anmerkung
Diese Option gilt nicht für das Format
AVRO
. Athena verwendetgzip
fürJSON
- undTEXTFILE
-Formate. - Kompressionsstufe =
compression_level
-
Optional. Die für die Komprimierung zu verwendende Komprimierungsstufe. ZSTD Diese Eigenschaft gilt nur für die ZSTD Komprimierung. Weitere Informationen finden Sie unter Verwenden Sie ZSTD Kompressionsstufen.
- field_delimiter = '
delimiter
' -
Optional. Gibt ein aus einem Zeichen bestehendes Feldtrennzeichen für Dateien in, und anderen Textformaten anCSV. TSV Das folgende Beispiel verwendet ein Komma als Trennzeichen:
WITH (field_delimiter = ',')
Derzeit werden mehrzeilige Feldtrennzeichen nicht unterstützt. Wenn Sie kein Feldtrennzeichen angeben, wird das Oktalzeichen
\001
(^A) verwendet. - partitioned_by = [ARRAY
col_name
[,...] ] -
Optional. Eine Array-Liste der Spalten, nach denen die Ausgabe partitioniert ist.
Anmerkung
Stellen Sie in Ihrer
SELECT
-Anweisung sicher, dass die Namen der partitionierten Spalten in Ihrer Spaltenliste an letzter Stelle stehen.
Beispiele
Das folgende Beispiel schreibt die Ausgabe einer SELECT
Abfrage s3://amzn-s3-demo-bucket/unload_test_1/
unter Verwendung des JSON Formats an den Amazon S3 S3-Speicherort.
UNLOAD (SELECT * FROM old_table) TO 's3://amzn-s3-demo-bucket/unload_test_1/' WITH (format = 'JSON')
Im folgenden Beispiel wird die Ausgabe einer SELECT
-Abfrage im Parquet-Format mithilfe der Snappy-Komprimierung geschrieben.
UNLOAD (SELECT * FROM old_table) TO 's3://amzn-s3-demo-bucket/' WITH (format = 'PARQUET',compression = 'SNAPPY')
Im folgenden Beispiel werden vier Spalten im Textformat geschrieben, wobei die Ausgabe durch die letzte Spalte partitioniert ist.
UNLOAD (SELECT name1, address1, comment1, key1 FROM table1) TO 's3://amzn-s3-demo-bucket/ partitioned/' WITH (format = 'TEXTFILE', partitioned_by = ARRAY['key1'])
Im folgenden Beispiel werden die Abfrageergebnisse unter Verwendung des Parquet-Dateiformats, der Komprimierung und der ZSTD ZSTD Komprimierungsstufe 4 an den angegebenen Speicherort entladen.
UNLOAD (SELECT * FROM old_table) TO 's3://amzn-s3-demo-bucket/' WITH (format = 'PARQUET', compression = 'ZSTD', compression_level = 4)