UNLOAD-Beispiele - 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-Beispiele

Diese Beispiele veranschaulichen verschiedene Parameter des UNLOAD-Befehls. Der TICKIT-Beispieldatensatz wird in vielen Beispielen verwendet. Weitere Informationen finden Sie unter Beispieldatenbank.

Anmerkung

In den folgenden Beispielen werden aus Gründen der Lesbarkeit Zeilenumbrüche verwendet. Verwenden Sie in Ihrer Zeichenfolge credentials-args keine Zeilenumbrüche oder Leerzeichen.

Entladen von VENUE in eine Datei, die das Pipe-Zeichen als Trennzeichen enthält (Standardtrennzeichen)

Im folgenden Beispiel werden die Tabelle VENUE entladen und die Daten in geschrieben s3://amzn-s3-demo-bucket/unload/:

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

Standardmäßig schreibt UNLOAD eine oder mehrere Dateien pro Slice. Unter Annahme eines Clusters mit zwei Knoten und zwei Slices pro Knoten werden im vorherigen Beispiel in die folgenden Dateien erstellt amzn-s3-demo-bucket:

unload/0000_part_00 unload/0001_part_00 unload/0002_part_00 unload/0003_part_00

Um die Ausgabedateien besser zu differenzieren, können Sie für den Speicherort ein Präfix verwenden. Im folgenden Beispiel werden die Tabelle VENUE entladen und die Daten in s3://amzn-s3-demo-bucket/unload/venue_pipe_ geschrieben:

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

Das Ergebnis dieser vier Dateien ist der Ordner unload, erneut unter Annahme von vier Slices.

venue_pipe_0000_part_00 venue_pipe_0001_part_00 venue_pipe_0002_part_00 venue_pipe_0003_part_00

Tabelle LINEITEM in partitionierte Parquet-Dateien entladen

Im folgenden Beispiel wird die Tabelle LINEITEM im Parquet-Format entladen, das durch die l_shipdate-Spalte unterteilt wird.

unload ('select * from lineitem') to 's3://amzn-s3-demo-bucket/lineitem/' iam_role 'arn:aws:iam::0123456789012:role/MyRedshiftRole' PARQUET PARTITION BY (l_shipdate);

Unter der Annahme von vier Slices werden die resultierenden Parquet-Dateien dynamisch in verschiedene Ordner aufgeteilt.

s3://amzn-s3-demo-bucket/lineitem/l_shipdate=1992-01-02/0000_part_00.parquet 0001_part_00.parquet 0002_part_00.parquet 0003_part_00.parquet s3://amzn-s3-demo-bucket/lineitem/l_shipdate=1992-01-03/0000_part_00.parquet 0001_part_00.parquet 0002_part_00.parquet 0003_part_00.parquet s3://amzn-s3-demo-bucket/lineitem/l_shipdate=1992-01-04/0000_part_00.parquet 0001_part_00.parquet 0002_part_00.parquet 0003_part_00.parquet ...
Anmerkung

In einigen Fällen verwendet der UNLOAD-Befehl die INCLUDE-Option, wie in der folgenden SQL-Anweisung gezeigt.

unload ('select * from lineitem') to 's3://amzn-s3-demo-bucket/lineitem/' iam_role 'arn:aws:iam::0123456789012:role/MyRedshiftRole' PARQUET PARTITION BY (l_shipdate) INCLUDE;

In diesen Fällen befindet sich die l_shipdate-Spalte auch in den Daten in den Parquet-Dateien. Andernfalls befinden sich die l_shipdate-Spaltendaten nicht in den Parquet-Dateien.

Entladen der VENUE-Tabelle in eine JSON-Datei

Im folgenden Beispiel wird die VENUE-Tabelle entladen und die Daten im JSON-Format in s3://amzn-s3-demo-bucket/unload/ geschrieben.

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

Im Folgenden sind die Beispielzeilen der VENUE-Tabelle aufgeführt.

venueid | venuename | venuecity | venuestate | venueseats --------+----------------------------+-----------------+------------+----------- 1 | Pinewood Racetrack | Akron | OH | 0 2 | Columbus "Crew" Stadium | Columbus | OH | 0 4 | Community, Ballpark, Arena | Kansas City | KS | 0

Nach dem Entladen in JSON sieht das Format der Datei in etwa wie folgt aus.

{"venueid":1,"venuename":"Pinewood Racetrack","venuecity":"Akron","venuestate":"OH","venueseats":0} {"venueid":2,"venuename":"Columbus \"Crew\" Stadium ","venuecity":"Columbus","venuestate":"OH","venueseats":0} {"venueid":4,"venuename":"Community, Ballpark, Arena","venuecity":"Kansas City","venuestate":"KS","venueseats":0}

Entladen von VENUE in eine CSV-Datei

Im folgenden Beispiel wird die VENUE-Tabelle entladen und die Daten im CSV-Format in geschrieben s3://amzn-s3-demo-bucket/unload/.

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

Angenommen, die Tabelle VENUE enthält die folgenden Zeilen.

venueid | venuename | venuecity | venuestate | venueseats --------+----------------------------+-----------------+------------+----------- 1 | Pinewood Racetrack | Akron | OH | 0 2 | Columbus "Crew" Stadium | Columbus | OH | 0 4 | Community, Ballpark, Arena | Kansas City | KS | 0

Die Entladedatei sieht ähnlich wie folgt aus.

1,Pinewood Racetrack,Akron,OH,0 2,"Columbus ""Crew"" Stadium",Columbus,OH,0 4,"Community, Ballpark, Arena",Kansas City,KS,0

Entladen von VENUE in eine CSV-Datei mit einem Trennzeichen

Im folgenden Beispiel wird die VENUE-Tabelle entladen und die Daten im CSV-Format mit dem Pipe-Zeichen (|) als Trennzeichen geschrieben. Die entladene Datei wird in s3://amzn-s3-demo-bucket/unload/ geschrieben. Die VENUE-Tabelle in diesem Beispiel enthält das Pipe-Zeichen im Wert der ersten Zeile (Pinewood Race|track). Es tut dies, um zu zeigen, dass der Wert im Ergebnis in doppelte Anführungszeichen eingeschlossen ist. Ein doppeltes Anführungszeichen wird durch ein doppeltes Anführungszeichen maskiert, und das gesamte Feld ist in doppelte Anführungszeichen eingeschlossen.

unload ('select * from venue') to 's3://amzn-s3-demo-bucket/unload/' iam_role 'arn:aws:iam::0123456789012:role/MyRedshiftRole' CSV DELIMITER AS '|';

Angenommen, die Tabelle VENUE enthält die folgenden Zeilen.

venueid | venuename | venuecity | venuestate | venueseats --------+----------------------------+-----------------+------------+------------- 1 | Pinewood Race|track | Akron | OH | 0 2 | Columbus "Crew" Stadium | Columbus | OH | 0 4 | Community, Ballpark, Arena | Kansas City | KS | 0

Die Entladedatei sieht ähnlich wie folgt aus.

1|"Pinewood Race|track"|Akron|OH|0 2|"Columbus ""Crew"" Stadium"|Columbus|OH|0 4|Community, Ballpark, Arena|Kansas City|KS|0

Entladen von VENUE mit einer Manifestdatei

Um eine Manifestdatei zu erstellen, schließen Sie die Option MANIFEST ein. Im folgenden Beispiel wird die VENUE-Tabelle entladen und eine Manifestdatei zusammen mit den Datendateien nach s3://amzn-s3-demo-bucket/venue_pipe_ geschrieben:

Wichtig

Wenn Sie Dateien mithilfe der Option MANIFEST entladen, sollten Sie die Option MANIFEST mit dem Befehl COPY verwenden, wenn Sie die Dateien laden. Wenn Sie dasselbe Präfix verwenden, um die Dateien zu laden, und die Option MANIFEST nicht angeben, schlägt der Befehl COPY fehl, da er annimmt, dass es sich bei der Manifestdatei um eine Datendatei handelt.

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

Das Ergebnis sind diese fünf Dateien:

s3://amzn-s3-demo-bucket/venue_pipe_0000_part_00 s3://amzn-s3-demo-bucket/venue_pipe_0001_part_00 s3://amzn-s3-demo-bucket/venue_pipe_0002_part_00 s3://amzn-s3-demo-bucket/venue_pipe_0003_part_00 s3://amzn-s3-demo-bucket/venue_pipe_manifest

Im Folgenden wird der Inhalt der Manifestdatei gezeigt.

{ "entries": [ {"url":"s3://amzn-s3-demo-bucket/tickit/venue_0000_part_00"}, {"url":"s3://amzn-s3-demo-bucket/tickit/venue_0001_part_00"}, {"url":"s3://amzn-s3-demo-bucket/tickit/venue_0002_part_00"}, {"url":"s3://amzn-s3-demo-bucket/tickit/venue_0003_part_00"} ] }

Entladen von VENUE mit MANIFEST VERBOSE

Bei Angabe der Option MANIFEST VERBOSE enthält die Manifestdatei die folgenden Abschnitte:

  • Im Abschnitt entries werden der Amazon S3-Pfad, die Dateigröße und die Zeilenanzahl für die einzelnen Dateien aufgeführt.

  • Im Abschnitt schema werden die Spaltennamen, Datentypen und die Dimension für die einzelnen Spalten aufgeführt.

  • Im Abschnitt meta wird die gesamte Dateigröße und die Zeilenanzahl für alle Dateien aufgeführt.

Im folgenden Beispiel wird die Tabelle VENUE mithilfe der Option MANIFEST VERBOSE entladen.

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

Im Folgenden wird der Inhalt der Manifestdatei gezeigt.

{ "entries": [ {"url":"s3://amzn-s3-demo-bucket/venue_pipe_0000_part_00", "meta": { "content_length": 32295, "record_count": 10 }}, {"url":"s3://amzn-s3-demo-bucket/venue_pipe_0001_part_00", "meta": { "content_length": 32771, "record_count": 20 }}, {"url":"s3://amzn-s3-demo-bucket/venue_pipe_0002_part_00", "meta": { "content_length": 32302, "record_count": 10 }}, {"url":"s3://amzn-s3-demo-bucket/venue_pipe_0003_part_00", "meta": { "content_length": 31810, "record_count": 15 }} ], "schema": { "elements": [ {"name": "venueid", "type": { "base": "integer" }}, {"name": "venuename", "type": { "base": "character varying", 25 }}, {"name": "venuecity", "type": { "base": "character varying", 25 }}, {"name": "venuestate", "type": { "base": "character varying", 25 }}, {"name": "venueseats", "type": { "base": "character varying", 25 }} ] }, "meta": { "content_length": 129178, "record_count": 55 }, "author": { "name": "Amazon Redshift", "version": "1.0.0" } }

Entladen von VENUE mit einer Kopfzeile

Das folgende Beispiel entlädt VENUE mit einer Kopfzeile.

unload ('select * from venue where venueseats > 75000') to 's3://amzn-s3-demo-bucket/unload/' iam_role 'arn:aws:iam::0123456789012:role/MyRedshiftRole' header parallel off;

Nachfolgend sehen Sie den Inhalt der Ausgabedatei mit einer Kopfzeile.

venueid|venuename|venuecity|venuestate|venueseats 6|New York Giants Stadium|East Rutherford|NJ|80242 78|INVESCO Field|Denver|CO|76125 83|FedExField|Landover|MD|91704 79|Arrowhead Stadium|Kansas City|MO|79451

Entladen von VENUE zu kleineren Dateien

Die maximal zulässige Dateigröße ist standardmäßig 6,2 GB. Wenn die Größe der Datei mit den entladenen Daten 6,2 GB überschreitet, erstellt UNLOAD eine neue Datei für jedes Datensegment von 6,2 GB. Um kleinere Dateien zu erstellen, verwenden Sie den Parameter MAXFILESIZE. Wenn die Größe der Daten im vorherigen Beispiel ist 20 GB betragen würde, würde der folgende UNLOAD-Befehl 20 Dateien erstellen, jede mit einer Größe von 1 GB.

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

Serielles Entladen von VENUE

Um eine serielle Entladung auszuführen, geben Sie PARALLEL OFF an. UNLOAD schreibt anschließend in jeweils eine einzelne Datei bis zu maximal 6,2 GB pro Datei.

Im folgenden Beispiel werden die Tabelle VENUE entladen und die Daten seriell in geschrieben s3://amzn-s3-demo-bucket/unload/.

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

Das Ergebnis ist eine einzelne Datei namens venue_serial_000.

Wenn die Größe der Datei mit den entladenen Daten 6,2 GB überschreitet, erstellt UNLOAD eine neue Datei für jedes Datensegment von 6,2 GB. Im folgenden Beispiel werden die Tabelle LINEORDER entladen und die Daten seriell in geschrieben s3://amzn-s3-demo-bucket/unload/.

unload ('select * from lineorder') to 's3://amzn-s3-demo-bucket/unload/lineorder_serial_' iam_role 'arn:aws:iam::0123456789012:role/MyRedshiftRole' parallel off gzip;

Das Ergebnis ist die folgende Reihe von Dateien.

lineorder_serial_0000.gz lineorder_serial_0001.gz lineorder_serial_0002.gz lineorder_serial_0003.gz

Um die Ausgabedateien besser zu differenzieren, können Sie für den Speicherort ein Präfix verwenden. Im folgenden Beispiel werden die Tabelle VENUE entladen und die Daten in s3://amzn-s3-demo-bucket/venue_pipe_ geschrieben:

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

Das Ergebnis dieser vier Dateien ist der Ordner unload, erneut unter Annahme von vier Slices.

venue_pipe_0000_part_00 venue_pipe_0001_part_00 venue_pipe_0002_part_00 venue_pipe_0003_part_00

Laden von VENUE aus entladenen Dateien

Um eine Tabelle aus einem Satz entladener Dateien zu laden, kehren Sie den Befehl einfach unter Verwendung eines COPY-Befehls um. Im folgenden Beispiel werden eine neue Tabelle namens LOADVENUE erstellt und diese Tabelle aus den im vorherigen Beispiel erstellten Datendateien geladen.

create table loadvenue (like venue); copy loadvenue from 's3://amzn-s3-demo-bucket/venue_pipe_' iam_role 'arn:aws:iam::0123456789012:role/MyRedshiftRole';

Wenn Sie die Option MANIFEST verwendet haben, um mit den entladenen Dateien eine Manifestdatei zu erstellen, können Sie die Daten unter Verwendung derselben Manifestdatei laden. Führen Sie dazu einen COPY-Befehl mit der Option MANIFEST aus. Im folgenden Beispiel werden Daten unter Verwendung einer Manifestdatei geladen.

copy loadvenue from 's3://amzn-s3-demo-bucket/venue_pipe_manifest' iam_role 'arn:aws:iam::0123456789012:role/MyRedshiftRole' manifest;

Entladen von VENUE zu verschlüsselten Dateien

Im folgenden Beispiel wird die VENUE-Tabelle mithilfe eines Schlüssels in eine Reihe von verschlüsselten Dateien entladen. AWS KMS Wenn Sie eine Manifestdatei mit der Option ENCRYPTED angeben, wird die Manifestdatei ebenfalls verschlüsselt. Weitere Informationen finden Sie unter Entladen verschlüsselter Datendateien.

unload ('select * from venue') to 's3://amzn-s3-demo-bucket/venue_encrypt_kms' iam_role 'arn:aws:iam::0123456789012:role/MyRedshiftRole' kms_key_id '1234abcd-12ab-34cd-56ef-1234567890ab' manifest encrypted;

Im folgenden Beispiel wird die Tabelle VENUE zu einem Satz verschlüsselter Dateien unter Verwendung eines symmetrischen Root-Schlüssels entladen.

unload ('select * from venue') to 's3://amzn-s3-demo-bucket/venue_encrypt_cmk' iam_role 'arn:aws:iam::0123456789012:role/MyRedshiftRole' master_symmetric_key 'EXAMPLEMASTERKEYtkbjk/OpCwtYSx/M4/t7DMCDIK722' encrypted;

Laden von VENUE aus verschlüsselten Dateien

Um Tabellen aus einem Satz von Dateien zu laden, die unter Verwendung von UNLOAD mit der Option ENCRYPT erstellt wurden, kehren Sie den Prozess einfach unter Verwendung eines COPY-Befehls um. Verwenden Sie die Option ENCRYPTED mit diesem Befehl und geben Sie denselben symmetrischen Root-Schlüssel an, der für den UNLOAD-Befehl verwendet wurde. Im folgenden Beispiel wird die Tabelle LOADVENUE aus den im vorherigen Beispiel erstellten verschlüsselten Datendateien geladen.

create table loadvenue (like venue); copy loadvenue from 's3://amzn-s3-demo-bucket/venue_encrypt_manifest' iam_role 'arn:aws:iam::0123456789012:role/MyRedshiftRole' master_symmetric_key 'EXAMPLEMASTERKEYtkbjk/OpCwtYSx/M4/t7DMCDIK722' manifest encrypted;

Entladen von VENUE zu einer Datei mit Tabulatoren als Trennzeichen

unload ('select venueid, venuename, venueseats from venue') to 's3://amzn-s3-demo-bucket/venue_tab_' iam_role 'arn:aws:iam::0123456789012:role/MyRedshiftRole' delimiter as '\t';

Die Ausgabedatendateien sehen wie folgt aus:

1 Toyota Park Bridgeview IL 0 2 Columbus Crew Stadium Columbus OH 0 3 RFK Stadium Washington DC 0 4 CommunityAmerica Ballpark Kansas City KS 0 5 Gillette Stadium Foxborough MA 68756 ...

Entladen von VENUE zu einer Datei mit festen Spaltenbreiten

unload ('select * from venue') to 's3://amzn-s3-demo-bucket/venue_fw_' iam_role 'arn:aws:iam::0123456789012:role/MyRedshiftRole' fixedwidth as 'venueid:3,venuename:39,venuecity:16,venuestate:2,venueseats:6';

Die Ausgabedatendateien sehen wie folgt aus.

1 Toyota Park Bridgeview IL0 2 Columbus Crew Stadium Columbus OH0 3 RFK Stadium Washington DC0 4 CommunityAmerica BallparkKansas City KS0 5 Gillette Stadium Foxborough MA68756 ...

Entladen von VENUE zu einem Satz von GZIP-komprimierten Dateien mit Tabulatoren als Trennzeichen

unload ('select * from venue') to 's3://amzn-s3-demo-bucket/venue_tab_' iam_role 'arn:aws:iam::0123456789012:role/MyRedshiftRole' delimiter as '\t' gzip;

Entladen von VENUE in eine GZIP-komprimierte Textdatei

unload ('select * from venue') to 's3://amzn-s3-demo-bucket/venue_tab_' iam_role 'arn:aws:iam::0123456789012:role/MyRedshiftRole' extension 'txt.gz' gzip;

Entladen von Daten, die ein Trennzeichen enthalten

In diesem Beispiel wird die Option ADDQUOTES verwendet, um durch Komma getrennte Daten zu entladen, in denen einige der tatsächlichen Datenfelder ein Komma enthalten.

Erstellen Sie zunächst eine Tabelle, die Anführungszeichen enthält.

create table location (id int, location char(64)); insert into location values (1,'Phoenix, AZ'),(2,'San Diego, CA'),(3,'Chicago, IL');

Entladen Sie die Daten anschließend unter Verwendung der Option ADDQUOTES.

unload ('select id, location from location') to 's3://amzn-s3-demo-bucket/location_' iam_role 'arn:aws:iam::0123456789012:role/MyRedshiftRole' delimiter ',' addquotes;

Die entladenen Daten sehen wie folgt aus:

1,"Phoenix, AZ" 2,"San Diego, CA" 3,"Chicago, IL" ...

Entladen der Ergebnisse einer Join-Abfrage

Im folgenden Beispiel werden die Ergebnisse einer Join-Abfrage entladen, die eine Fensterfunktion enthält.

unload ('select venuecity, venuestate, caldate, pricepaid, sum(pricepaid) over(partition by venuecity, venuestate order by caldate rows between 3 preceding and 3 following) as winsum from sales join date on sales.dateid=date.dateid join event on event.eventid=sales.eventid join venue on event.venueid=venue.venueid order by 1,2') to 's3://amzn-s3-demo-bucket/tickit/winsum' iam_role 'arn:aws:iam::0123456789012:role/MyRedshiftRole';

Die Ausgabedateien sehen wie folgt aus:

Atlanta|GA|2008-01-04|363.00|1362.00 Atlanta|GA|2008-01-05|233.00|2030.00 Atlanta|GA|2008-01-06|310.00|3135.00 Atlanta|GA|2008-01-08|166.00|8338.00 Atlanta|GA|2008-01-11|268.00|7630.00 ...

Entladen unter Verwendung von NULL AS

UNLOAD gibt Null-Werte standardmäßig als leere Zeichenfolgen zurück. Die folgenden Beispiele zeigen, wie NULL AS verwendet wird, um Null-Werte durch Textzeichenfolgen zu ersetzen.

Hierzu fügen wir der Tabelle VENUE einige Null-Werte hinzu.

update venue set venuestate = NULL where venuecity = 'Cleveland';

Wählen Sie aus VENUE aus, wobei VENUESTATE null ist, um zu überprüfen, ob die Spalten NULL enthalten.

select * from venue where venuestate is null; venueid | venuename | venuecity | venuestate | venueseats ---------+--------------------------+-----------+------------+------------ 22 | Quicken Loans Arena | Cleveland | | 0 101 | Progressive Field | Cleveland | | 43345 72 | Cleveland Browns Stadium | Cleveland | | 73200

Entladen Sie nun die Tabelle VENUE unter Verwendung der Option NULL AS, um Null-Werte durch die Zeichenfolge zu ersetzen. 'fred'.

unload ('select * from venue') to 's3://amzn-s3-demo-bucket/nulls/' iam_role 'arn:aws:iam::0123456789012:role/MyRedshiftRole' null as 'fred';

Das folgende Beispiel aus der entladenen Datei zeigt, dass Null-Werte durch ersetzt wurden fred. Es stellt sich heraus, dass einige Werte für VENUESEATS ebenfalls null waren und durch ersetzt wurden fred. Auch wenn es sich beim Datentyp für VENUESEATS um Ganzzahl handelt, wandelt UNLOAD die Werte in den entladenen Dateien in Text um. Anschließend wandelt COPY sie wieder in Ganzzahlen um. Wenn Sie Daten zu einer Date mit festen Spaltenbreiten entladen, darf die NULL AS-Zeichenfolge nicht länger als die Feldbreite sein.

248|Charles Playhouse|Boston|MA|0 251|Paris Hotel|Las Vegas|NV|fred 258|Tropicana Hotel|Las Vegas|NV|fred 300|Kennedy Center Opera House|Washington|DC|0 306|Lyric Opera House|Baltimore|MD|0 308|Metropolitan Opera|New York City|NY|0 5|Gillette Stadium|Foxborough|MA|5 22|Quicken Loans Arena|Cleveland|fred|0 101|Progressive Field|Cleveland|fred|43345 ...

Um eine Tabelle aus den entladenen Dateien zu laden, verwenden Sie einen COPY-Befehl mit derselben NULL AS-Option.

Anmerkung

Wenn Sie versuchen, Null-Werte in eine Spalte zu laden, die als NOT NULL definiert ist, schlägt der Befehl COPY fehl.

create table loadvenuenulls (like venue); copy loadvenuenulls from 's3://amzn-s3-demo-bucket/nulls/' iam_role 'arn:aws:iam::0123456789012:role/MyRedshiftRole' null as 'fred';

Um zu überprüfen, ob die Spalten Null-Werte enthalten und nicht nur leere Zeichenfolgen, wählen Sie aus LOADVENUENULLS aus und filtern nach Null-Werten.

select * from loadvenuenulls where venuestate is null or venueseats is null; venueid | venuename | venuecity | venuestate | venueseats ---------+--------------------------+-----------+------------+------------ 72 | Cleveland Browns Stadium | Cleveland | | 73200 253 | Mirage Hotel | Las Vegas | NV | 255 | Venetian Hotel | Las Vegas | NV | 22 | Quicken Loans Arena | Cleveland | | 0 101 | Progressive Field | Cleveland | | 43345 251 | Paris Hotel | Las Vegas | NV | ...

Sie können eine Tabelle entladen, die Null-Werte enthält, indem Sie das NULL AS-Standardverhalten verwenden und anschließend die Daten unter Verwendung des NULL AS-Standardverhaltens wieder in eine Tabelle kopieren. Alle nicht numerischen Felder in der Zieltabelle werden jedoch leere Zeichenfolgen und keine Null-Werte enthalten. Standardmäßig wandelt UNLOAD Null-Werte in leere Zeichenfolgen um (Leerzeichen oder Null-Länge). COPY wandelt leere Zeichenfolgen für numerische Spalten in NULL um, fügt in nichtnumerische Spalten jedoch leere Zeichenfolgen ein. Im folgenden Beispiel wird gezeigt, wie Sie eine UNLOAD-Operation gefolgt von einer COPY-Operation unter Verwendung des NULL AS-Standardverhaltens ausführen.

unload ('select * from venue') to 's3://amzn-s3-demo-bucket/nulls/' iam_role 'arn:aws:iam::0123456789012:role/MyRedshiftRole' allowoverwrite; truncate loadvenuenulls; copy loadvenuenulls from 's3://amzn-s3-demo-bucket/nulls/' iam_role 'arn:aws:iam::0123456789012:role/MyRedshiftRole';

In diesem Fall enthalten nur die Zeilen mit VENUESEATS Null-Werte, wenn Sie nach Null-Werten filtern. Wenn VENUESTATE in der Tabelle (VENUE) Null-Werte enthält, enthält VENUESTATE in der Zieltabelle (LOADVENUENULLS) leere Zeichenfolgen.

select * from loadvenuenulls where venuestate is null or venueseats is null; venueid | venuename | venuecity | venuestate | venueseats ---------+--------------------------+-----------+------------+------------ 253 | Mirage Hotel | Las Vegas | NV | 255 | Venetian Hotel | Las Vegas | NV | 251 | Paris Hotel | Las Vegas | NV | ...

Um leere Zeichenfolgen in nichtnumerische Spalten als NULL zu laden, schließen Sie die Optionen EMPTYASNULL oder BLANKSASNULL ein. Sie können beide Optionen gleichzeitig verwenden.

unload ('select * from venue') to 's3://amzn-s3-demo-bucket/nulls/' iam_role 'arn:aws:iam::0123456789012:role/MyRedshiftRole' allowoverwrite; truncate loadvenuenulls; copy loadvenuenulls from 's3://amzn-s3-demo-bucket/nulls/' iam_role 'arn:aws:iam::0123456789012:role/MyRedshiftRole' EMPTYASNULL;

Um zu überprüfen, ob die Spalten NULL enthalten und nicht nur Leerzeichen oder leere Zeichenfolgen, wählen Sie aus LOADVENUENULLS aus und filtern nach Null-Werten.

select * from loadvenuenulls where venuestate is null or venueseats is null; venueid | venuename | venuecity | venuestate | venueseats ---------+--------------------------+-----------+------------+------------ 72 | Cleveland Browns Stadium | Cleveland | | 73200 253 | Mirage Hotel | Las Vegas | NV | 255 | Venetian Hotel | Las Vegas | NV | 22 | Quicken Loans Arena | Cleveland | | 0 101 | Progressive Field | Cleveland | | 43345 251 | Paris Hotel | Las Vegas | NV | ...

Entladen mit dem Parameter ALLOWOVERWRITE

Standardmäßig überschreibt UNLOAD keine Dateien, die im Ziel-Bucket vorhanden sind. Wenn Sie beispielsweise dieselbe UNLOAD-Anweisung zweimal ausführen, ohne die Dateien im Ziel-Bucket zu ändern, schlägt die zweite UNLOAD-Anweisung fehl. Um die vorhandenen Dateien, einschließlich der Manifestdatei, zu überschreiben, geben Sie die Option ALLOWOVERWRITE an.

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

Entladen der EVENT-Tabelle mithilfe der Parameter PARALLEL und MANIFEST

Sie können eine Tabelle mit UNLOAD parallel entladen und eine Manifestdatei anlegen. Die Amazon-S3-Datendateien werden alle auf derselben Ebene erstellt und Namen werden mit dem Suffix des Musters 0000_part_00 versehen. Die Manifestdatei befindet sich auf derselben Ordnerebene wie die Datendateien und ist mit dem Suffixtext manifest versehen. Die folgende SQL-Anweisung entlädt die EVENT-Tabelle und erstellt Dateien mit dem Basisnamen parallel.

unload ('select * from mytickit1.event') to 's3://amzn-s3-demo-bucket/parallel' iam_role 'arn:aws:iam::123456789012:role/MyRedshiftRole' parallel on manifest;

Die Amazon-S3-Dateiliste sieht etwa wie folgt aus.

Name Last modified Size parallel0000_part_00 - August 2, 2023, 14:54:39 (UTC-07:00) 52.1 KB parallel0001_part_00 - August 2, 2023, 14:54:39 (UTC-07:00) 53.4 KB parallel0002_part_00 - August 2, 2023, 14:54:39 (UTC-07:00) 52.1 KB parallel0003_part_00 - August 2, 2023, 14:54:39 (UTC-07:00) 51.1 KB parallel0004_part_00 - August 2, 2023, 14:54:39 (UTC-07:00) 54.6 KB parallel0005_part_00 - August 2, 2023, 14:54:39 (UTC-07:00) 53.4 KB parallel0006_part_00 - August 2, 2023, 14:54:39 (UTC-07:00) 54.1 KB parallel0007_part_00 - August 2, 2023, 14:54:39 (UTC-07:00) 55.9 KB parallelmanifest - August 2, 2023, 14:54:39 (UTC-07:00) 886.0 B

Der Inhalt der Datei parallelmanifest ähnelt dem folgenden Beispiel.

{ "entries": [ {"url":"s3://amzn-s3-demo-bucket/parallel0000_part_00", "meta": { "content_length": 53316 }}, {"url":"s3://amzn-s3-demo-bucket/parallel0001_part_00", "meta": { "content_length": 54704 }}, {"url":"s3://amzn-s3-demo-bucket/parallel0002_part_00", "meta": { "content_length": 53326 }}, {"url":"s3://amzn-s3-demo-bucket/parallel0003_part_00", "meta": { "content_length": 52356 }}, {"url":"s3://amzn-s3-demo-bucket/parallel0004_part_00", "meta": { "content_length": 55933 }}, {"url":"s3://amzn-s3-demo-bucket/parallel0005_part_00", "meta": { "content_length": 54648 }}, {"url":"s3://amzn-s3-demo-bucket/parallel0006_part_00", "meta": { "content_length": 55436 }}, {"url":"s3://amzn-s3-demo-bucket/parallel0007_part_00", "meta": { "content_length": 57272 }} ] }

Entladen der EVENT-Tabelle mithilfe der Parameter PARALLEL OFF und MANIFEST

Sie können eine Tabelle mit UNLOAD seriell entladen (PARALLEL OFF) und eine Manifestdatei anlegen. Die Amazon-S3-Datendateien werden alle auf derselben Ebene erstellt und Namen werden mit dem Suffix des Musters 0000 versehen. Die Manifestdatei befindet sich auf derselben Ordnerebene wie die Datendateien und ist mit dem Suffixtext manifest versehen.

unload ('select * from mytickit1.event') to 's3://amzn-s3-demo-bucket/serial' iam_role 'arn:aws:iam::123456789012:role/MyRedshiftRole' parallel off manifest;

Die Amazon-S3-Dateiliste sieht etwa wie folgt aus.

Name Last modified Size serial0000 - August 2, 2023, 15:54:39 (UTC-07:00) 426.7 KB serialmanifest - August 2, 2023, 15:54:39 (UTC-07:00) 120.0 B

Der Inhalt der Datei serialmanifest ähnelt dem folgenden Beispiel.

{ "entries": [ {"url":"s3://amzn-s3-demo-bucket/serial000", "meta": { "content_length": 436991 }} ] }

Entladen der EVENT-Tabelle mithilfe der Parameter PARTITION BY und MANIFEST

Sie können eine Tabelle mit UNLOAD partitionsweise entladen und eine Manifestdatei anlegen. In Amazon S3 wird ein neuer Ordner mit untergeordneten Partitionsordnern erstellt und die Datendateien in den untergeordneten Ordnern haben ein Namensmuster ähnlich wie 0000_par_00. Die Manifestdatei befindet sich auf derselben Ordnerebene wie die untergeordneten Ordner mit dem Namen manifest.

unload ('select * from mytickit1.event') to 's3://amzn-s3-demo-bucket/partition' iam_role 'arn:aws:iam::123456789012:role/MyRedshiftRole' partition by (eventname) manifest;

Die Amazon-S3-Dateiliste sieht etwa wie folgt aus.

Name Type Last modified Size partition Folder

Im Ordner partition befinden sich untergeordnete Ordner mit dem Partitionsnamen und der Manifestdatei. Im Folgenden sehen Sie das Ende der Liste der Ordner im Ordner partition, ähnlich wie folgt.

Name Type Last modified Size ... eventname=Zucchero/ Folder eventname=Zumanity/ Folder eventname=ZZ Top/ Folder manifest - August 2, 2023, 15:54:39 (UTC-07:00) 467.6 KB

Im Ordner eventname=Zucchero/ befinden sich die Datendateien, ähnlich wie folgt.

Name Last modified Size 0000_part_00 - August 2, 2023, 15:59:19 (UTC-07:00) 70.0 B 0001_part_00 - August 2, 2023, 15:59:16 (UTC-07:00) 106.0 B 0002_part_00 - August 2, 2023, 15:59:15 (UTC-07:00) 70.0 B 0004_part_00 - August 2, 2023, 15:59:17 (UTC-07:00) 141.0 B 0006_part_00 - August 2, 2023, 15:59:16 (UTC-07:00) 35.0 B 0007_part_00 - August 2, 2023, 15:59:19 (UTC-07:00) 108.0 B

Das Ende der Datei manifest ähnelt dem folgenden Beispiel.

{ "entries": [ ... {"url":"s3://amzn-s3-demo-bucket/partition/eventname=Zucchero/007_part_00", "meta": { "content_length": 108 }}, {"url":"s3://amzn-s3-demo-bucket/partition/eventname=Zumanity/007_part_00", "meta": { "content_length": 72 }} ] }

Entladen der EVENT-Tabelle mithilfe der Parameter MAXFILESIZE, ROWGROUPSIZE und MANIFEST

Sie können eine Tabelle mit UNLOAD parallel entladen und eine Manifestdatei anlegen. Die Amazon-S3-Datendateien werden alle auf derselben Ebene erstellt und Namen werden mit dem Suffix des Musters 0000_part_00 versehen. Die generierten Parquet-Datendateien sind auf 256 MB und die Zeilengruppengröße ist auf 128 MB begrenzt. Die Manifestdatei befindet sich auf derselben Ordnerebene wie die Datendateien und ist mit dem Suffix manifest versehen.

unload ('select * from mytickit1.event') to 's3://amzn-s3-demo-bucket/eventsize' iam_role 'arn:aws:iam::123456789012:role/MyRedshiftRole' maxfilesize 256 MB rowgroupsize 128 MB parallel on parquet manifest;

Die Amazon-S3-Dateiliste sieht etwa wie folgt aus.

Name Type Last modified Size eventsize0000_part_00.parquet parquet August 2, 2023, 17:35:21 (UTC-07:00) 24.5 KB eventsize0001_part_00.parquet parquet August 2, 2023, 17:35:21 (UTC-07:00) 24.8 KB eventsize0002_part_00.parquet parquet August 2, 2023, 17:35:21 (UTC-07:00) 24.4 KB eventsize0003_part_00.parquet parquet August 2, 2023, 17:35:21 (UTC-07:00) 24.0 KB eventsize0004_part_00.parquet parquet August 2, 2023, 17:35:21 (UTC-07:00) 25.3 KB eventsize0005_part_00.parquet parquet August 2, 2023, 17:35:21 (UTC-07:00) 24.8 KB eventsize0006_part_00.parquet parquet August 2, 2023, 17:35:21 (UTC-07:00) 25.0 KB eventsize0007_part_00.parquet parquet August 2, 2023, 17:35:21 (UTC-07:00) 25.6 KB eventsizemanifest - August 2, 2023, 17:35:21 (UTC-07:00) 958.0 B

Der Inhalt der Datei eventsizemanifest ähnelt dem folgenden Beispiel.

{ "entries": [ {"url":"s3://amzn-s3-demo-bucket/eventsize0000_part_00.parquet", "meta": { "content_length": 25130 }}, {"url":"s3://amzn-s3-demo-bucket/eventsize0001_part_00.parquet", "meta": { "content_length": 25428 }}, {"url":"s3://amzn-s3-demo-bucket/eventsize0002_part_00.parquet", "meta": { "content_length": 25025 }}, {"url":"s3://amzn-s3-demo-bucket/eventsize0003_part_00.parquet", "meta": { "content_length": 24554 }}, {"url":"s3://amzn-s3-demo-bucket/eventsize0004_part_00.parquet", "meta": { "content_length": 25918 }}, {"url":"s3://amzn-s3-demo-bucket/eventsize0005_part_00.parquet", "meta": { "content_length": 25362 }}, {"url":"s3://amzn-s3-demo-bucket/eventsize0006_part_00.parquet", "meta": { "content_length": 25647 }}, {"url":"s3://amzn-s3-demo-bucket/eventsize0007_part_00.parquet", "meta": { "content_length": 26256 }} ] }