UNLOAD - Amazon Redshift

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

Entlädt das Ergebnis einer Abfrage in eine oder mehrere Textdateien, JSON-Dateien oder in Apache-Parquet-Dateien in Amazon S3 unter Verwendung der serverseitigen Amazon-S3-Verschlüsselung (SSE-S3). Sie können auch eine serverseitige Verschlüsselung mit einem AWS Key Management Service -Schlüssel (SSE-KMS) oder eine clientseitige Verschlüsselung mit einem vom Kunden verwalteten Schlüssel angeben.

Standardmäßig ist das Format der entladenen Datei ein mit senkrechten Strichen (Pipeoperator) getrennter Text (|).

Sie können die Größe von Dateien in Amazon S3 und damit auch die Anzahl von Dateien verwalten, indem Sie den Parameter MAXFILESIZE festlegen. Stellen Sie sicher, dass die S3-IP-Bereiche zu Ihrer Zulassungsliste hinzugefügt werden. Weitere Informationen zu den erforderlichen S3-IP-Bereichen finden Sie unter Netzwerkisolierung.

Sie können das Ergebnis einer Abfrage in Amazon Redshift in Ihr Amazon S3-Data Lake in Apache Parquet entladen, einem effizienten offenen spaltenbasierten Speicherformat für Analysen. Das Parquet-Format ist bis zu 2x schneller zu entladen und belegt in Amazon S3 bis zu 6x weniger Speicherplatz als Textformate. Auf diese Weise können Sie die Datentransformation und -anreicherung, die Sie in Amazon S3 vorgenommen haben, in Ihrem Amazon S3-Data Lake in einem offenen Format speichern. Anschließend können Sie Ihre Daten mit Redshift Spectrum und anderen AWS Diensten wie Amazon Athena, Amazon EMR und Amazon AI analysieren. SageMaker

Weitere Informationen und Beispielszenarien zur Verwendung des Befehls UNLOAD finden Sie unter Entladen von Daten in Amazon Redshift.

Erforderliche Rechte und Berechtigungen

Damit der UNLOAD-Befehl erfolgreich ausgeführt werden kann, sind mindestens das SELECT-Recht für die Daten in der Datenbank sowie die Berechtigung zum Schreiben in den Amazon-S3-Speicherort erforderlich. Informationen zu den Zugriffsberechtigungen für den Befehl UNLOAD auf AWS Ressourcen finden Sie unter. Berechtigungen für den Zugriff auf andere AWS -Ressourcen

Um Berechtigungen mit den geringsten Rechten anzuwenden, folgen Sie diesen Empfehlungen, um nur dem Benutzer, der den Befehl ausführt, die erforderlichen Berechtigungen zu gewähren.

  • Der Benutzer muss über die SELECT-Berechtigung für die Daten verfügen. Hinweise zur Einschränkung von Datenbankberechtigungen finden Sie unterGRANT.

  • Der Benutzer benötigt die Erlaubnis, die IAM-Rolle anzunehmen, um in den Amazon S3 S3-Bucket in Ihrem AWS-Konto zu schreiben. Informationen zum Einschränken des Zugriffs für einen Datenbankbenutzer auf die Übernahme einer Rolle finden Sie unter Beschränken des Zugriffs auf IAM-Rollen im Amazon Redshift Management Guide.

  • Der Benutzer benötigt Zugriff auf den Amazon S3 S3-Bucket. Informationen zum Einschränken von Berechtigungen mithilfe einer Amazon S3-Bucket-Richtlinie finden Sie unter Bucket-Richtlinien für Amazon S3 im Amazon Simple Storage Service-Benutzerhandbuch.

Syntax

UNLOAD ('select-statement') TO 's3://object-path/name-prefix' authorization [ option, ...] where authorization is IAM_ROLE { default | 'arn:aws:iam::<AWS-Konto-id-1>:role/<role-name>[,arn:aws:iam::<AWS-Konto-id-2>:role/<role-name>][,...]' } where option is | [ FORMAT [ AS ] ] CSV | PARQUET | JSON | PARTITION BY ( column_name [, ... ] ) [ INCLUDE ] | MANIFEST [ VERBOSE ] | HEADER | DELIMITER [ AS ] 'delimiter-char' | FIXEDWIDTH [ AS ] 'fixedwidth-spec' | ENCRYPTED [ AUTO ] | BZIP2 | GZIP | ZSTD | ADDQUOTES | NULL [ AS ] 'null-string' | ESCAPE | ALLOWOVERWRITE | CLEANPATH | PARALLEL [ { ON | TRUE } | { OFF | FALSE } ] | MAXFILESIZE [AS] max-size [ MB | GB ] | ROWGROUPSIZE [AS] size [ MB | GB ] | REGION [AS] 'aws-region' } | EXTENSION 'extension-name'

Parameter

('select-statement')

Eine SELECT-Abfrage. Die Ergebnisse der Abfrage werden entladen. In den meisten Fällen lohnt es sich, Daten in sortierter Reihenfolge zu entladen, indem in der Abfrage eine ORDER BY-Klausel angegeben wird. Dieser Ansatz spart die für das Sortieren der Daten beim erneuten Laden benötigte Zeit.

Die Abfrage muss in einfache Anführungszeichen gesetzt werden, wie im Folgenden gezeigt:

('select * from venue order by venueid')
Anmerkung

Wenn Ihre Abfrage Anführungszeichen enthält (z. B. um Literalwerte einzuschließen), setzen Sie das Literal zwischen zwei Sätze einfacher Anführungszeichen. Sie müssen auch die Abfrage in einfache Anführungszeichen einschließen:

('select * from venue where venuestate=''NV''')
TO 's3://object-path/name-prefix'

Der vollständige Pfad, einschließlich des Bucket-Namens, zum Speicherort in Amazon S3, an dem Amazon Redshift die ausgegebenen Dateiobjekte schreibt, einschließlich der Manifest-Datei, wenn MANIFEST angegeben ist. Den Objektnamen wird name-prefix vorangestellt. Wenn Sie PARTITION BY verwenden, wird bei Bedarf automatisch ein Schrägstrich (/) am Ende des Namens-Präfix-Wertes eingefügt. Um zusätzliche Sicherheit bereitzustellen, stellt UNLOAD eine Verbindung zu Amazon S3 über HTTPS her. Standardmäßig schreibt UNLOAD eine oder mehrere Dateien pro Slice. UNLOAD fügt eine Slice-Nummer und Teilenummer an das angegebene Namenspräfix wie im Folgenden gezeigt an:

<object-path>/<name-prefix><slice-number>_part_<part-number>.

Wenn MANIFEST angegeben ist, wird die Manifestdatei wie folgt geschrieben:

<object_path>/<name_prefix>manifest.

Wenn PARALLEL auf OFF festgelegt ist, werden die Datendateien wie folgt geschrieben:

<object_path>/<name_prefix><part-number>.

UNLOAD erstellt automatisch mithilfe der serverseitigen Amazon-S3-Verschlüsselung (SSE) verschlüsselte Dateien, einschließlich der Manifestdatei, wenn MANIFEST verwendet wird. Der Befehl COPY liest automatisch serverseitig verschlüsselte Daten während der Ladeoperationen. Sie können serverseitig verschlüsselte Dateien über die Amazon-S3-Managementkonsole oder die API transparent aus Ihrem Bucket herunterladen. Weitere Informationen finden Sie unter Schutz von Daten mittels serverseitiger Verschlüsselung.

Um die clientseitige Amazon-S3-Verschlüsselung zu verwenden, geben Sie die ENCRYPTED-Option an.

Wichtig

REGION ist erforderlich, wenn sich der Amazon-S3-Bucket nicht in derselben AWS-Region  wie die Amazon-Redshift-Datenbank befindet.

Autorisierung

Der Befehl UNLOAD benötigt eine Autorisierung, um Daten zu Amazon S3 zu schreiben. Der Befehl UNLOAD verwendet für die Autorisierung dieselben Parameter wie der Befehl COPY. Weitere Informationen finden Sie unter Autorisierungsparameter in der COPY-Befehlssyntaxreferenz.

IAM_ROLE {default | 'arn:aws:iam: ::role/ '<AWS-Konto-id-1><role-name>

Verwenden Sie das Standardstichwort, damit Amazon Redshift die IAM-Rolle verwendet, die als Standard festgelegt und mit dem Cluster verknüpft ist, wenn der UNLOAD-Befehl ausgeführt wird.

Verwenden Sie den Amazon-Ressourcennamen (ARN) für eine IAM-Rolle, die von Ihrem Cluster für Authentifizierung und Autorisierung verwendet wird. Wenn Sie IAM_ROLE angeben, können Sie ACCESS_KEY_ID und SECRET_ACCESS_KEY, SESSION_TOKEN oder CREDENTIALS nicht verwenden. IAM_ROLE kann verkettet werden. Weitere Informationen finden Sie unter Verketten von IAM-Rollen im Amazon-Redshift-Verwaltungshandbuch.

[ FORMAT [AS] ] CSV | PARQUET | JSON

Schlüsselwörter zur Angabe des Entladeformats, die das Standardformat außer Kraft setzen.

Bei CSV wird eine Entladung in eine Textdatei im CSV-Format durchgeführt, bei der ein Kommazeichen (,) als Standard-Trennzeichen verwendet wird. Wenn ein Feld Trennzeichen, doppelte Anführungszeichen, Zeilenvorschubzeichen oder Zeilenumbrüche enthält, wird das Feld in der entladenen Datei in doppelte Anführungszeichen eingeschlossen. Einem doppelten Anführungszeichen innerhalb eines Datenfeldes wird ein zusätzliches doppeltes Anführungszeichen vorangestellt. Wenn null Zeilen entladen werden, schreibt Amazon Redshift möglicherweise leere Amazon-S3-Objekte.

Im Falle von PARQUET wird in eine Datei im Apache-Parquet-Version-1.0-Format entladen. Standardmäßig wird jede Zeilengruppe mittels SNAPPY-Komprimierung komprimiert. Weitere Informationen zum Apache-Parquet-Format finden Sie unter Parquet.

Im Fall von JSON erfolgt eine Entladung in eine JSON-Datei, wobei jede Zeile ein JSON-Objekt enthält, das einen vollständigen Datensatz im Abfrageergebnis darstellt. Amazon Redshift unterstützt das Schreiben von verschachteltem JSON, wenn das Abfrageergebnis SUPER-Spalten enthält. Um ein gültiges JSON-Objekt zu erstellen, muss der Name jeder Spalte in der Abfrage eindeutig sein. In der JSON-Datei werden boolesche Werte als t oder f und NULL-Werte als null entladen. Wenn null Zeilen entladen werden, schreibt Amazon Redshift keine Amazon-S3-Objekte.

Die Schlüsselwörter FORMAT und AS sind optional. Sie können CSV nicht mit ESCAPE, FIXEDWIDTH oder ADDQUOTES verwenden. Sie können PARQUET nicht mit DELIMITER, FIXEDWIDTH, ADDQUOTES, ESCAPE, NULL AS, HEADER, GZIP oder STD verwenden. BZIP2 PARQUET with ENCRYPTED wird nur bei serverseitiger Verschlüsselung mit einem Schlüssel (SSE-KMS) unterstützt. AWS Key Management Service Sie können JSON nicht mit DELIMITER, HEADER, FIXEDWIDTH, ADDQUOTES, ESCAPE oder NULL AS verwenden.

PARTITION BY (column_name [, ... ]) [INCLUDE]

Gibt die Partitionsschlüssel für die Entladeoperation an. Über UNLOAD werden die Ausgabedateien entsprechend der Apache-Hive-Konvention automatisch in Partitionsordner basierend auf den Partitionsschlüsselwerten partitioniert. Beispielsweise verfügt eine Parquet-Datei, die zum Partitionsjahr 2019 und dem Monat September gehört, über das folgende Präfix: s3://amzn-s3-demo-bucket/my_prefix/year=2019/month=September/000.parquet.

Der Wert für column_name muss eine Spalte in den Abfrageergebnissen sein, die entladen werden.

Wenn Sie PARTITION BY mit der Option INCLUDE angeben, werden Partitionsspalten nicht aus den entladenen Dateien entfernt.

Amazon Redshift unterstützt keine Zeichenfolgeliterale in PARTITION-BY-Klauseln.

MANIFEST [ VERBOSE ]

Erstellt eine Manifestdatei, die explizit Details der Datendateien auflistet, die durch den UNLOAD-Prozess erstellt werden. Das Manifest ist eine Textdatei im JSON-Format, die die URL jeder einzelnen Datei auflistet, die auf Amazon S3 geschrieben wurde.

Bei Angabe von MANIFEST mit der Option VERBOSE enthält das Manifest die folgenden Details:

  • Die Spaltennamen und Datentypen und für die Datentypen CHAR, VARCHAR oder NUMERIC Dimension für die einzelnen Spalten. Im Fall der Datentypen CHAR und VARCHAR entspricht die Dimension der Länge. Im Fall der Datentypen DECIMAL oder NUMERIC data type, sind die Dimensionen Genauigkeit und Skalierung.

  • Die Anzahl der in die einzelnen Dateien entladenen Zeilen. Bei Angabe der Option HEADER schließt die Zeilenanzahl die Kopfzeile ein.

  • Die gesamte Dateigröße aller entladenen Dateien und die Gesamtzahl der in alle Dateien entladenen Zeilen. Bei Angabe der Option HEADER schließt die Zeilenanzahl die Kopfzeilen ein.

  • Den Autor. Der Autor ist immer „Amazon Redshift“.

Sie können VERBOSE nur auf MANIFEST folgend angeben.

Die Manifestdatei wird im gleichen Amazon-S3-Pfadpräfix wie die entladenen Dateien im Format geschrieben <object_path_prefix>manifest. Wenn UNLOAD beispielsweise das Amazon-S3-Pfadpräfix 's3://amzn-s3-demo-bucket/venue_' angibt, ist der Speicherort der Manifestdatei 's3://amzn-s3-demo-bucket/venue_manifest'.

HEADER

Fügt eine Kopfzeile mit den Spaltennamen oben in jeder Ausgabedatei hinzu. Texttransformationsoptionen wie CSV, DELIMITER, ADDQUOTES und ESCAPE gelten auch für die Kopfzeile. Sie können HEADER nicht mit FIXEDWIDTH verwenden.

DELIMITER AS 'delimiter_character'

Gibt ein einzelnes ASCII-Zeichen an, das verwendet wird, um Felder in der Ausgabedatei zu trennen, beispielsweise ein Pipe-Zeichen ( | ), ein Komma ( , ) oder ein Tabulatorzeichen ( \t ). Das Standardtrennzeichen für Textdateien ist ein Pipe-Zeichen. Das Standardtrennzeichen für CSV-Dateien ist ein Kommazeichen. Das Schlüsselwort AS ist optional. Sie können DELIMITER nicht mit FIXEDWIDTH verwenden. Wenn die Daten das Trennzeichen enthalten, müssen Sie die ESCAPE-Option angeben, um ein Escape-Zeichen für das Trennzeichen zu verwenden, oder ADDQUOTES verwenden, um die Daten in doppelte Anführungszeichen einzuschließen. Alternativ können Sie ein Trennzeichen angeben, das nicht in den Daten enthalten ist.

FIXEDWIDTH 'fixedwidth_spec'

Entlädt die Daten in eine Datei, in der jede Spalte eine feste Breite hat, statt durch ein Trennzeichen abgetrennt zu werden. fixedwidth_spec ist eine Zeichenfolge, die die Anzahl der Spalten und die Breite der Spalten angibt. Das Schlüsselwort AS ist optional. Da FIXEDWIDTH keine Daten abschneidet, muss die Spezifikation für jede Spalte in der UNLOAD-Anweisung mindestens so lang wie die Länge des längsten Eintrags für die Spalte sein. Das Format für fixedwidth_spec wird im Folgenden gezeigt:

'colID1:colWidth1,colID2:colWidth2, ...'

Sie können FIXEDWIDTH nicht mit DELIMITER oder HEADER verwenden.

VERSCHLÜSSELT [AUTO]

Gibt an, dass die Ausgabedateien auf Amazon S3 mit der serverseitigen Verschlüsselung von Amazon S3 oder der clientseitigen Verschlüsselung verschlüsselt werden. Wenn MANIFEST angegeben ist, wird die Manifestdatei ebenfalls verschlüsselt. Weitere Informationen finden Sie unter Entladen verschlüsselter Datendateien. Wenn Sie den ENCRYPTED-Parameter nicht angeben, erstellt UNLOAD automatisch verschlüsselte Dateien mithilfe der serverseitigen Amazon S3 S3-Verschlüsselung mit AWS verwalteten Verschlüsselungsschlüsseln (SSE-S3).

Für ENCRYPTED möchten Sie möglicherweise mithilfe einer serverseitigen Verschlüsselung mit einem AWS KMS Schlüssel (SSE-KMS) nach Amazon S3 entladen. Wenn dies der Fall ist, verwenden Sie den KMS_KEY_ID-Parameter, um die Schlüssel-ID anzugeben. Sie können den Parameter CREDENTIALS nicht mit dem Parameter KMS_KEY_ID verwenden. Wenn Sie einen UNLOAD-Befehl für Daten mit KMS_KEY_ID ausführen, können Sie dann einen COPY-Vorgang für dieselben Daten ausführen, ohne einen Schlüssel anzugeben.

Um die clientseitige Verschlüsselung mit einem vom Kunden bereitgestellten symmetrischen Schlüssel nach Amazon S3 zu entladen, geben Sie den Schlüssel auf zwei Arten an. Verwenden Sie zum Bereitstellen des Schlüssels den MASTER_SYMMETRIC_KEY-Parameter oder den master_symmetric_key-Teil einer CREDENTIALS-Anmeldeinformationszeichenfolge. Wenn Sie Daten mit einem symmetrischen Root-Schlüssel entladen, stellen Sie sicher, dass Sie denselben Schlüssel angeben, wenn Sie einen COPY-Vorgang für die verschlüsselten Daten ausführen.

UNLOAD unterstützt keine serverseitige Amazon-S3-Verschlüsselung mit von Kunden bereitgestellten Schlüsseln (SSE-C).

Wenn ENCRYPTED AUTO verwendet wird, ruft der Befehl UNLOAD den AWS KMS Standardverschlüsselungsschlüssel auf der Zieleigenschaft des Amazon S3-Buckets ab und verschlüsselt die in Amazon S3 geschriebenen Dateien mit dem Schlüssel. AWS KMS Wenn der Bucket nicht über den AWS KMS Standard-Verschlüsselungsschlüssel verfügt, erstellt UNLOAD automatisch verschlüsselte Dateien mithilfe der serverseitigen Amazon Redshift Redshift-Verschlüsselung mit AWS verwalteten Verschlüsselungsschlüsseln (SSE-S3). Sie können diese Option nicht mit KMS_KEY_ID, MASTER_SYMMETRIC_KEY oder CREDENTIALS verwenden, in denen master_symmetric_key enthalten ist.

KMS_KEY_ID 'key-id'

Gibt die Schlüssel-ID für einen AWS Key Management Service (AWS KMS) -Schlüssel an, der zum Verschlüsseln von Datendateien auf Amazon S3 verwendet werden soll. Weitere Informationen finden Sie unter Was ist AWS Key Management Service? Wenn Sie KMS_KEY_ID angeben, müssen Sie auch den Parameter ENCRYPTED angeben. Wenn Sie KMS_KEY_ID angeben, können Sie keine Authentifizierungen mittels des Parameters CREDENTIALS ausführen. Verwenden Sie stattdessen IAM_ROLE oder ACCESS_KEY_ID and SECRET_ACCESS_KEY.

MASTER_SYMMETRIC_KEY 'root_key'

Gibt den symmetrischen Root-Schlüssel an, der für die Verschlüsselung von Datendateien auf Amazon S3 verwendet werden soll. Wenn Sie MASTER_SYMMETRIC_KEY angeben, müssen Sie auch den Parameter ENCRYPTED angeben. MASTER_SYMMETRIC_KEY kann nicht mit dem Parameter CREDENTIALS verwendet werden. Weitere Informationen finden Sie unter Laden verschlüsselter Datendateien aus Amazon S3.

BZIP2

Entlädt Daten zu einer oder mehreren bzip2-komprimierten Dateien pro Slice. Jeder resultierenden Datei wird die Erweiterung .bz2 angefügt.

GZIP

Entlädt Daten in eine oder mehrere gzip-komprimierte Dateien pro Slice. Jeder resultierenden Datei wird die Erweiterung .gz angefügt.

ZSTD

Entlädt Daten zu einer oder mehreren Zstandard-komprimierten Dateien pro Slice. Jeder resultierenden Datei wird die Erweiterung .zst angefügt.

ADDQUOTES

Platziert Anführungszeichen um jedes entladene Datenfeld, sodass Amazon Redshift Datenwerte entladen kann, die das Trennzeichen selbst enthalten. Wenn beispielsweise das Trennzeichen ein Komma ist, könnten Sie die folgenden Daten erfolgreich entladen und neu laden:

"1","Hello, World"

Ohne die hinzugefügten Anführungszeichen würde die Zeichenfolge Hello, World als zwei getrennte Felder analysiert werden.

Einige Ausgabeformate unterstützen ADDQUOTES nicht.

Wenn Sie ADDQUOTES verwenden, müssen Sie REMOVEQUOTES in der COPY-Operation angeben, wenn Sie die Daten neu laden.

NULL AS 'null-string'

Gibt eine Zeichenfolge zurück, die einen Null-Wert in entladenen Dateien darstellt. Wenn diese Option verwendet wird, enthalten alle Ausgabedateien die angegebene Zeichenfolge statt Null-Werten, die in den ausgewählten Daten gefunden werden. Wenn diese Option nicht angegeben ist, werden Null-Werte wie folgt entladen:

  • Zeichenfolgen mit null Länge für Ausgaben mit Trennzeichen

  • Leerzeichen-Zeichenfolgen für Ausgaben mit festen Spaltenbreiten

Wenn eine Null-Zeichenfolge angegeben ist, um eine Ausgabe mit fester Spaltenbreite zu entladen, und die Breite einer Ausgabespalte kleiner als die Breite der Null-Zeichenfolge ist, tritt das folgende Verhalten auf:

  • Ein leeres Feld als Ausgabe für Spalten, die keine Zeichen enthalten

  • Ein Fehler für Spalten, die Zeichen enthalten

Im Gegensatz zu anderen Datentypen, bei denen eine benutzerdefinierte Zeichenfolge einen Nullwert darstellt, exportiert Amazon Redshift die SUPER-Datenspalten im JSON-Format und stellt sie als null dar, wie durch das JSON-Format bestimmt. Daher ignorieren SUPER-Datenspalten die Option NULL [AS], die in UNLOAD-Befehlen verwendet wird.

ESCAPE

In CHAR- und VARCHAR-Spalten in entladenen Dateien mit Trennzeichen wird ein Escape-Zeichen (\) vor jedes Auftreten der folgenden Zeichen platziert:

  • Zeilenvorschub: \n

  • Zeilenumschaltung: \r

  • Das Trennzeichen, das für die entladenen Daten angegeben ist.

  • Das Escape-Zeichen: \

  • Ein Anführungszeichen: " oder ' (wenn sowohl ESCAPE als auch ADDQUOTES im Befehl UNLOAD angegeben sind)

Wichtig

Wenn Sie Ihre Daten mittels einer COPY-Operation mit der ESCAPE-Option geladen haben, müssen Sie die ESCAPE-Option auch für Ihren UNLOAD-Befehl angeben, um die reziproke Ausgabedatei zu generieren. Wenn Sie UNLOAD unter Verwendung der Option ESCAPE ausführen, müssen Sie ESCAPE verwenden, wenn Sie eine COPY-Operation für dieselben Daten ausführen.

ALLOWOVERWRITE

Standardmäßig schlägt UNLOAD fehl, wenn die Operation auf Dateien trifft, die sie möglicherweise überschreiben könnte. Bei Angabe von ALLOWOVERWRITE überschreibt UNLOAD vorhandene Dateien einschließlich der Manifestdatei.

CLEANPATH

Die Option CLEANPATH entfernt vorhandene Dateien, die sich in dem in der TO-Klausel angegebenen Amazon-S3-Pfad befinden, bevor Dateien an den angegebenen Speicherort entladen werden.

Wenn Sie die PARTITION BY-Klausel einschließen, werden vorhandene Dateien nur aus den Partitionsordnern entfernt, die neue, durch die UNLOAD-Operation erzeugte Dateien aufnehmen sollen.

Sie müssen über s3:DeleteObject-Leseberechtigung für den Amazon-S3-Bucket verfügen. Weitere Informationen finden Sie unter Richtlinien und Berechtigungen in Amazon S3 im Amazon-Simple-Storage-Service-Benutzerhandbuch. Dateien, die Sie mithilfe der CLEANPATH-Option entfernen, werden dauerhaft gelöscht und können nicht wiederhergestellt werden. Wenn für den Amazon S3 S3-Ziel-Bucket die Versionsverwaltung aktiviert ist, entfernt UNLOAD mit der Option CLEANPATH keine früheren Versionen der Dateien.

Sie können die Option CLEANPATH nicht angeben, wenn Sie die Option ALLOVOVERWRITE verwenden.

PARALLEL

Standardmäßig schreibt UNLOAD die Daten parallel in mehrere Dateien, je nach der Anzahl der Slices in dem Cluster. Die Standardoption ist ON oder TRUE. Wenn PARALLEL OFF oder FALSE ist, schreibt UNLOAD seriell zu einer oder mehreren Datendateien und ist absolut entsprechend der ORDER BY-Klausel sortiert, wenn eine solche Klausel verwendet wird. Die maximale Größe für eine Datendatei ist 6,2 GB. Wenn Sie beispielsweise 13,4 GB Daten entladen, erstellt UNLOAD die folgenden drei Dateien.

s3://amzn-s3-demo-bucket/key000 6.2 GB s3://amzn-s3-demo-bucket/key001 6.2 GB s3://amzn-s3-demo-bucket/key002 1.0 GB
Anmerkung

Der UNLOAD-Befehl ist zur Verwendung der parallelen Verarbeitung gedacht. Wir empfehlen, in den meisten Fällen PARALLEL aktiviert zu lassen, besonders, wenn die Dateien zum Laden von Tabellen mit einem COPY-Befehl verwendet werden sollen.

MAXFILESIZE [AS] max-size [ MB | GB ]

Gibt die maximale Größe von Dateien an, die UNLOAD in Amazon S3 erstellt. Geben Sie einen Dezimalwert zwischen 5 MB und 6,2 GB an. Das Schlüsselwort AS ist optional. Die Standardeinheit ist MB. Wenn MAXFILESIZE nicht angegeben wird, ist die standardmäßig zulässige Dateigröße 6,2 GB. Die Größe der Manifestdatei, falls verwendet, ist von MAXFILESIZE nicht betroffen.

ROWGROUPSIZE [AS] size [ MB | GB ]

Gibt die Größe von Zeilengruppen an. Die Auswahl einer größeren Größe kann die Anzahl der Zeilengruppen und somit den Umfang der Netzwerkkommunikation verringern. Geben Sie einen Ganzzahlwert zwischen 32 MB und 128 MB an. Das Schlüsselwort AS ist optional. Die Standardeinheit ist MB.

Wenn ROWGROUPSIZE nicht angegeben ist, beträgt die Standardgröße 32 MB. Um diesen Parameter verwenden zu können, muss das Speicherformat Parquet und der Knotentyp ra3.4xlarge, ra3.16xlarge oder dc2.8xlarge sein.

REGION [AS] 'aws-region'

Gibt an AWS-Region , wo sich der Amazon S3 S3-Ziel-Bucket befindet. REGION ist für UNLOAD in einen Amazon S3 S3-Bucket erforderlich, der sich nicht in derselben AWS-Region Amazon Redshift Redshift-Datenbank befindet.

Der Wert für aws_region muss mit einer AWS Region übereinstimmen, die in der Amazon Redshift Redshift-Tabelle für Regionen und Endpunkte in der aufgeführt ist. Allgemeine AWS-Referenz

Standardmäßig geht UNLOAD davon aus, dass sich der Amazon S3 S3-Ziel-Bucket in derselben AWS-Region Amazon Redshift Redshift-Datenbank befindet.

EXTENSION 'extension-name'

Gibt die Dateierweiterung an, die an die Namen der entladenen Dateien angehängt werden soll. Amazon Redshift führt keine Validierung durch, daher müssen Sie selbst überprüfen, ob die angegebene Dateierweiterung korrekt ist. Wenn Sie eine Komprimierungsmethode angeben, ohne eine Erweiterung anzugeben, fügt Amazon Redshift dem Dateinamen nur die Erweiterung der Komprimierungsmethode hinzu. Wenn Sie keine Erweiterung angeben und keine Komprimierungsmethode angeben, fügt Amazon Redshift dem Dateinamen nichts hinzu.

Nutzungshinweise

Verwendung von ESCAPE für alle UNLOAD-Textoperationen mit Trennzeichen

Wenn Sie eine UNLOAD-Operation mit Trennzeichen ausführen, können Ihre Daten dieses Trennzeichen oder eines der Zeichen enthalten, die in der Beschreibung der ESCAPE-Option aufgelistet werden. In diesem Fall müssen Sie die ESCAPE-Option mit der UNLOAD-Anweisung verwenden. Wenn Sie die ESCAPE-Option nicht mit der UNLOAD-Anweisung verwenden, schlagen nachfolgende COPY-Operationen, die die entladenen Daten verwenden, möglicherweise fehl.

Wichtig

Wir empfehlen nachdrücklich, ESCAPE immer mit den Anweisungen UNLOAD und COPY zu verwenden. Eine Ausnahme liegt vor, wenn Sie sich sicher sind, dass Ihre Daten keine Trennzeichen oder andere Zeichen enthalten, für die möglicherweise ein Escape-Zeichen verwendet werden muss.

Verlust der Gleitkommawert-Präzision

Möglicherweise stellen Sie einen Präzisionsverlust bei Gleitkommawerten fest, die in Folge entladen und neu geladen werden.

Limit-Klausel

Die SELECT-Abfrage kann als umschließende SELECT-Abfrage keine LIMIT-Klausel verwenden. Beispielweise schlägt die folgende UNLOAD-Anweisung fehl.

unload ('select * from venue limit 10') to 's3://amzn-s3-demo-bucket/venue_pipe_' iam_role 'arn:aws:iam::0123456789012:role/MyRedshiftRole';

Verwenden Sie stattdessen eine verschachtelte LIMIT-Klausel, wie im folgenden Beispiel dargestellt.

unload ('select * from venue where venueid in (select venueid from venue order by venueid desc limit 10)') to 's3://amzn-s3-demo-bucket/venue_pipe_' iam_role 'arn:aws:iam::0123456789012:role/MyRedshiftRole';

Sie können eine Tabelle außerdem mit SELECT...INTO oder CREATE TABLE AS über eine LIMIT-Klausel füllen und dann aus dieser Tabelle entladen.

Entladen einer Spalte vom Datentyp GEOMETRY

Sie können GEOMETRY-Spalten nur im Text- oder CSV-Format entladen. Sie können GEOMETRY-Daten nicht mit der FIXEDWIDTH-Option entladen. Die Daten werden in hexadezimaler Form des EWKB-Formats entladen. Wenn die Größe der EWKB-Daten mehr als 4 MB beträgt, erfolgt eine Warnung, da die Daten später nicht mehr in eine Tabelle geladen werden können.

Entladen des Datentyps HLLSKETCH

Sie können HLLSKETCH-Spalten nur im Text- oder CSV-Format entladen. Sie können HLLSKETCH-Daten nicht mit der FIXEDWIDTH-Option entladen. Die Daten werden im Base64-Format für dichte HyperLogLog Skizzen oder im JSON-Format für dünn besetzte Skizzen entladen. HyperLogLog Weitere Informationen finden Sie unter HyperLogLog Funktionen.

Im folgenden Beispiel wird eine Tabelle mit HLLSKETCH-Spalten in eine Datei exportiert.

CREATE TABLE a_table(an_int INT, b_int INT); INSERT INTO a_table VALUES (1,1), (2,1), (3,1), (4,1), (1,2), (2,2), (3,2), (4,2), (5,2), (6,2); CREATE TABLE hll_table (sketch HLLSKETCH); INSERT INTO hll_table select hll_create_sketch(an_int) from a_table group by b_int; UNLOAD ('select * from hll_table') TO 's3://amzn-s3-demo-bucket/unload/' IAM_ROLE 'arn:aws:iam::0123456789012:role/MyRedshiftRole' NULL AS 'null' ALLOWOVERWRITE CSV;

Entladen einer Spalte des Datentyps VARBYTE

Sie können VARBYTE-Spalten nur im Text- oder CSV-Format entladen. Die Daten werden in hexadezimaler Form entladen. Sie können keine VARBYTE-Daten mit der FIXEDWIDTH-Option entladen. Die ADDQUOTES-Option von UNLOAD in das CSV-Format wird nicht unterstützt. VARBYTE-Spalten können keine PARTITIONED BY-Spalten sein.

Klausel FORMAT AS PARQUET

Beachten Sie bei der Verwendung von FORMAT AS PARQUET Folgendes:

  • Für das Entladen nach Parquet kommt keine Komprimierung auf Dateieben zur Anwendung. Jede Zeilengruppe wird mit SNAPPY komprimiert.

  • Wenn MAXFILESIZE nicht angegeben wird, ist die standardmäßig zulässige Dateigröße 6,2 GB. Sie können MAXFILESIZE verwenden, um eine Dateigröße von 5 MB bis 6,2 GB anzugeben. Die tatsächliche Dateigröße wird beim Schreiben der Datei annähernd beziffert, sodass sie möglicherweise nicht genau der von Ihnen angegebenen Zahl entspricht.

    Um die Scan-Leistung zu maximieren, versucht Amazon Redshift, Parquet-Dateien zu erstellen, die gleich große Zeilengruppen von 32 MB enthalten. Der von Ihnen angegebene MAXFILESIZE -Wert wird automatisch auf das nächste Vielfache von 32 MB abgerundet. Wenn Sie beispielsweise als MAXFILESIZE 200 MB angeben, beträgt jede entladene Parquet-Datei etwa 192 MB (Zeilengruppe von 32 MB x 6 = 192 MB).

  • Wenn eine Spalte das Datenformat TIMESTAMPTZ verwendet, werden nur die Zeitstempelwerte entladen. Die Zeitzoneninformationen werden nicht entladen.

  • Geben Sie keine Dateinamenpräfixe an, die mit Unterstrich (_) oder Punkt (.) beginnen. Redshift Spectrum behandelt Dateien, die mit diesen Zeichen beginnen, als versteckte Dateien und ignoriert sie.

Klausel PARTITION BY

Beachten Sie bei der Verwendung von PARTITION BY Folgendes:

  • Partitionsspalten sind nicht in der Ausgabedatei enthalten.

  • Stellen Sie sicher, dass die Partitionsspalten in der SELECT-Abfrage, die in der UNLOAD-Anweisung verwendet wird, enthalten sind. Sie können beliebig viele Partitionsspalten im UNLOAD-Befehl angeben. Allerdings gibt es eine Einschränkung, nämlich dass mindestens eine Nicht-Partitionsspalte vorhanden sein sollte, die Teil der Datei sein sollte.

  • Wenn der Wert des Partitionsschlüssels null ist, entlädt Amazon Redshift diese Daten automatisch in eine Standardpartition namens partition_column=__HIVE_DEFAULT_PARTITION__.

  • Der Befehl UNLOAD führt keine Aufrufe an einen externen Katalog durch. Um Ihre neuen Partitionen als Teil Ihrer vorhandenen externen Tabelle zu registrieren, verwenden Sie einen separaten Befehl ALTER TABLE... ADD PARTITION... Alternativ können Sie einen Befehl CREATE EXTERNAL TABLE ausführen, um die entladenen Daten als neue externe Tabelle zu registrieren. Sie können Ihren Datenkatalog auch mit einem AWS Glue Crawler auffüllen. Weitere Informationen finden Sie unter Definieren von Crawlern im AWS Glue -Entwicklerhandbuch.

  • Wenn Sie die MANIFEST-Option verwenden, generiert Amazon Redshift nur eine Manifestdatei im Amazon-S3-Stammordner.

  • Die Spaltendatentypen, die Sie als Partitionsschlüssel verwenden können, sind SMALLINT, INTEGER, BIGINT, DECIMAL, REAL, BOOLEAN, CHAR, VARCHAR, DATE und TIMESTAMP.

Verwenden der ASSUMEROLE-Berechtigung, um einer IAM-Rolle Zugriff auf UNLOAD-Vorgänge zu gewähren

Um bestimmten Benutzern und Gruppen den Zugriff auf eine IAM-Rolle für UNLOAD-Vorgänge zu ermöglichen, kann ein Superuser Benutzern und Gruppen das ASSUMEROLE-Recht für eine IAM-Rolle gewähren. Weitere Informationen finden Sie unter GRANT.

UNLOAD unterstützt keine Amazon-S3-Zugriffspunkt-Aliase

Sie können keine Amazon-S3-Zugriffspunkt-Aliase mit dem UNLOAD-Befehl verwenden.

Beispiele

Beispiele zur Verwendung des UNLOAD-Befehls finden Sie unter UNLOAD-Beispiele.