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.
COPYBeispiele
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.
Themen
- FAVORITEMOVIESAus einer DynamoDB-Tabelle laden
- LISTINGAus einem Amazon S3 S3-Bucket laden
- LISTINGAus einem EMR Amazon-Cluster laden
- Verwenden eines Manifests für die Angabe von Datendateien
- LISTINGAus einer durch Leerzeichen getrennten Datei laden (Standardtrennzeichen)
- Mithilfe von spaltenförmigen Daten im Parquet-Format laden LISTING
- LISTINGMithilfe von spaltenförmigen Daten im Format laden ORC
- EVENTMit Optionen laden
- VENUEAus einer Datendatei mit fester Breite laden
- CATEGORYAus einer Datei laden CSV
- VENUEMit expliziten Werten für eine IDENTITY Spalte laden
- TIMEAus einer durch Leerzeichen getrennten Datei laden GZIP
- Laden eines Zeit- oder Datumsstempels
- Laden von Daten aus einer Datei mit Standardwerten
- COPYDaten mit der ESCAPE Option
- Aus JSON Beispielen kopieren
- Beispiele für die Kopie aus Avro
- Dateien werden für COPY mit der ESCAPE Option vorbereitet
- Laden eines Shapefile in Amazon Redshift
- COPYBefehl mit der NOLOAD Option
- COPYBefehl mit einem Multibyte-Trennzeichen und der Option ENCODING
FAVORITEMOVIESAus einer DynamoDB-Tabelle laden
Sie AWS SDKs enthalten ein einfaches Beispiel für die Erstellung einer DynamoDB-Tabelle namens Movies. (Informationen zu diesem Beispiel finden Sie unter Erste Schritte mit DynamoDB.) Im folgenden Beispiel wird die Amazon Redshift MOVIES Redshift-Tabelle mit Daten aus der DynamoDB-Tabelle geladen. Die Amazon-Redshift-Tabelle muss in der Datenbank bereits vorhanden sein.
copy favoritemovies from 'dynamodb://Movies' iam_role 'arn:aws:iam::0123456789012:role/MyRedshiftRole' readratio 50;
LISTINGAus einem Amazon S3 S3-Bucket laden
Das folgende Beispiel wird LISTING aus einem Amazon S3 S3-Bucket geladen. Der COPY Befehl lädt alle Dateien im /data/listing/
Ordner.
copy listing from 's3://amzn-s3-demo-bucket/data/listing/' iam_role 'arn:aws:iam::0123456789012:role/MyRedshiftRole';
LISTINGAus einem EMR Amazon-Cluster laden
Im folgenden Beispiel wird die SALES Tabelle mit tabulatorgetrennten Daten aus lzop-komprimierten Dateien in einem Amazon-Cluster geladen. EMR COPYlädt jede Datei in dem Ordner, der mit beginnt. myoutput/
part-
copy sales from 'emr://j-SAMPLE2B500FC/myoutput/part-*' iam_role 'arn:aws:iam::0123456789012:role/MyRedshiftRole' delimiter '\t' lzop;
Im folgenden Beispiel wird die SALES Tabelle mit JSON formatierten Daten in einen EMR Amazon-Cluster geladen. COPYlädt jede Datei im myoutput/json/
Ordner.
copy sales from 'emr://j-SAMPLE2B500FC/myoutput/json/' iam_role 'arn:aws:iam::0123456789012:role/MyRedshiftRole' JSON 's3://amzn-s3-demo-bucket/jsonpaths.txt';
Verwenden eines Manifests für die Angabe von Datendateien
Sie können ein Manifest verwenden, um sicherzustellen, dass Ihr COPY Befehl alle erforderlichen Dateien und nur die erforderlichen Dateien aus Amazon S3 lädt. Sie können ein Manifest auch verwenden, wenn Sie mehrere Dateien aus verschiedenen Buckets laden müssen oder Dateien, die nicht dasselbe Präfix besitzen.
Angenommen, Sie müssen die folgenden drei Dateien laden: custdata1.txt
, custdata2.txt
und custdata3.txt
. Sie könnten den folgenden Befehl verwenden, um alle Dateien in amzn-s3-demo-bucket
zu laden, die mit custdata
beginnen, indem Sie ein Präfix angeben:
copy category from 's3://amzn-s3-demo-bucket/custdata' iam_role 'arn:aws:iam::0123456789012:role/MyRedshiftRole';
Wenn aufgrund eines Fehlers nur zwei der Dateien vorhanden sind, werden nur diese beiden Dateien COPY geladen und der Vorgang erfolgreich abgeschlossen, was zu einem unvollständigen Datenladevorgang führt. Wenn der Bucket auch eine unerwünschte Datei enthält, die zufällig dasselbe Präfix verwendet, wie z. B. eine Datei mit dem Namencustdata.backup
, wird diese Datei ebenfalls COPY geladen, was dazu führt, dass unerwünschte Daten geladen werden.
Um sicherzustellen, dass alle erforderlichen Dateien geladen werden, und zu verhindern, dass nicht erwünschte Dateien geladen werden, können Sie eine Manifestdatei verwenden. Das Manifest ist eine Textdatei im JSON -Format, die die Dateien auflistet, die mit dem Befehl verarbeitet werden sollen. COPY Beispielsweise lädt das folgende Manifest die drei Dateien aus dem vorherigen Beispiel.
{ "entries":[ { "url":"s3://amzn-s3-demo-bucket/custdata.1", "mandatory":true }, { "url":"s3://amzn-s3-demo-bucket/custdata.2", "mandatory":true }, { "url":"s3://amzn-s3-demo-bucket/custdata.3", "mandatory":true } ] }
Das optionale mandatory
Flag gibt an, ob der COPY Vorgang beendet werden soll, wenn die Datei nicht existiert. Der Standardwert ist false
. Wird unabhängig von den obligatorischen Einstellungen COPY beendet, wenn keine Dateien gefunden werden. In diesem Beispiel wird ein Fehler COPY zurückgegeben, wenn eine der Dateien nicht gefunden wurde. Nicht erwünschte Dateien, die möglicherweise geladen werden, wenn Sie nur ein Schlüsselpräfix angeben, beispielsweise custdata.backup
, werden ignoriert, da sie nicht im Manifest aufgelistet werden.
Beim Laden aus Datendateien im ORC oder Parquet-Format ist ein meta
Feld erforderlich, wie im folgenden Beispiel gezeigt.
{ "entries":[ { "url":"s3://amzn-s3-demo-bucket1/orc/2013-10-04-custdata", "mandatory":true, "meta":{ "content_length":99 } }, { "url":"s3://amzn-s3-demo-bucket2/orc/2013-10-05-custdata", "mandatory":true, "meta":{ "content_length":99 } } ] }
Im folgenden Beispiel wird ein Manifest namens verwendet cust.manifest
.
copy customer from 's3://amzn-s3-demo-bucket/cust.manifest' iam_role 'arn:aws:iam::0123456789012:role/MyRedshiftRole' format as orc manifest;
Sie können ein Manifest verwenden, um Dateien aus verschiedenen Buckets hochzuladen oder Dateien, die nicht das gleiche Präfix verwenden. Das folgende Beispiel zeigtJSON, wie Daten mit Dateien geladen werden, deren Namen mit einem Datumsstempel beginnen.
{ "entries": [ {"url":"s3://amzn-s3-demo-bucket/2013-10-04-custdata.txt","mandatory":true}, {"url":"s3://amzn-s3-demo-bucket/2013-10-05-custdata.txt","mandatory":true}, {"url":"s3://amzn-s3-demo-bucket/2013-10-06-custdata.txt","mandatory":true}, {"url":"s3://amzn-s3-demo-bucket/2013-10-07-custdata.txt","mandatory":true} ] }
Das Manifest kann Dateien auflisten, die sich in verschiedenen Buckets befinden, sofern sich die Buckets in derselben AWS Region wie der Cluster befinden.
{ "entries": [ {"url":"s3://amzn-s3-demo-bucket1/custdata1.txt","mandatory":false}, {"url":"s3://amzn-s3-demo-bucket2/custdata1.txt","mandatory":false}, {"url":"s3://amzn-s3-demo-bucket2/custdata2.txt","mandatory":false} ] }
LISTINGAus einer durch Leerzeichen getrennten Datei laden (Standardtrennzeichen)
Das folgende Beispiel stellt einen sehr einfachen Fall dar, in dem keine Optionen angegeben sind und die Eingabedatei das Standardtrennzeichen enthält, ein Pipe-Zeichen (|).
copy listing from 's3://amzn-s3-demo-bucket/data/listings_pipe.txt' iam_role 'arn:aws:iam::0123456789012:role/MyRedshiftRole';
Mithilfe von spaltenförmigen Daten im Parquet-Format laden LISTING
Im folgenden Beispiel werden Daten aus einem Ordner in einem von Amazon S3 benannten Parquet geladen.
copy listing from 's3://amzn-s3-demo-bucket/data/listings/parquet/' iam_role 'arn:aws:iam::0123456789012:role/MyRedshiftRole' format as parquet;
LISTINGMithilfe von spaltenförmigen Daten im Format laden ORC
Im folgenden Beispiel werden Daten aus einem Ordner in Amazon S3 mit dem Namen orc
geladen.
copy listing from 's3://amzn-s3-demo-bucket/data/listings/orc/' iam_role 'arn:aws:iam::0123456789012:role/MyRedshiftRole' format as orc;
EVENTMit Optionen laden
Im folgenden Beispiel werden durch Pipen getrennte Daten in die EVENT Tabelle geladen und die folgenden Regeln angewendet:
-
Wenn Zeichenfolgen durch Paare von Angebotszeichen eingeschlossen werden, werden sie entfernt.
-
Sowohl leere Zeichenketten als auch Zeichenketten, die Leerzeichen enthalten, werden als Werte geladen. NULL
-
Der Ladevorgang schlägt fehl, wenn mehr als 5 Fehler zurückgegeben werden.
-
Zeitstempelwerte müssen das angegebene Format einhalten. Ein gültiger Zeitstempel ist beispielsweise
2008-09-26 05:43:12
.
copy event from 's3://amzn-s3-demo-bucket/data/allevents_pipe.txt' iam_role 'arn:aws:iam::0123456789012:role/MyRedshiftRole' removequotes emptyasnull blanksasnull maxerror 5 delimiter '|' timeformat 'YYYY-MM-DD HH:MI:SS';
VENUEAus einer Datendatei mit fester Breite laden
copy venue from 's3://amzn-s3-demo-bucket/data/venue_fw.txt' iam_role 'arn:aws:iam::0123456789012:role/MyRedshiftRole' fixedwidth 'venueid:3,venuename:25,venuecity:12,venuestate:2,venueseats:6';
Im vorherigen Beispiel wird angenommen, dass die Datendatei auf dieselbe Weise wie die gezeigten Beispieldateien formatiert ist. Im folgenden Beispiel dienen Leerzeichen als Platzhalter, sodass alle Spalten dieselbe Breite wie in der Spezifikation angegeben haben:
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
CATEGORYAus einer Datei laden CSV
Angenommen, Sie möchten das CATEGORY mit den in der folgenden Tabelle angegebenen Werten laden.
catid | catgroup | catname | catdesc |
---|---|---|---|
12 | Shows | Musicals | Musiktheater |
13 | Shows | Schauspiel | Theater, das kein Musiktheater ist |
14 | Shows | Oper | Alle Opern, sowohl leichte Opern als auch Rockopern |
15 | Konzerte | Klassisch | Alle Symphoniekonzerte, Konzerte und Chorkonzerte |
Im folgenden Beispiel werden die Inhalte einer Textdatei gezeigt, deren Feldwerte durch Kommas getrennt sind.
12,Shows,Musicals,Musical theatre 13,Shows,Plays,All "non-musical" theatre 14,Shows,Opera,All opera, light, and "rock" opera 15,Concerts,Classical,All symphony, concerto, and choir concerts
Wenn Sie die Datei mithilfe des DELIMITER Parameters laden, um eine kommagetrennte Eingabe anzugeben, schlägt der COPY Befehl fehl, da einige Eingabefelder Kommas enthalten. Sie können dieses Problem vermeiden, indem Sie den CSV Parameter verwenden und die Felder, die Kommas enthalten, in Anführungszeichen einschließen. Wenn ein Anführungszeichen innerhalb einer Zeichenfolge vorkommt, die durch Anführungszeichen eingeschlossen wird, müssen Sie dieses mit einer Escape-Markierung versehen, indem Sie das Anführungszeichen verdoppeln. Das Standardanführungszeichen ist ein doppeltes Anführungszeichen. Daher müssen Sie jedes doppelte Anführungszeichen mit einem zusätzlichen doppelten Anführungszeichen als Escape-Zeichen verwenden. Ihre neue Eingabedatei sieht ungefähr wie folgt aus.
12,Shows,Musicals,Musical theatre 13,Shows,Plays,"All ""non-musical"" theatre" 14,Shows,Opera,"All opera, light, and ""rock"" opera" 15,Concerts,Classical,"All symphony, concerto, and choir concerts"
Angenommen, der Dateiname lautetcategory_csv.txt
, können Sie die Datei mit dem folgenden COPY Befehl laden:
copy category from 's3://amzn-s3-demo-bucket/data/category_csv.txt' iam_role 'arn:aws:iam::0123456789012:role/MyRedshiftRole' csv;
Um zu vermeiden, dass die doppelten Anführungszeichen in Ihrer Eingabe maskiert werden müssen, können Sie alternativ mithilfe des QUOTE AS-Parameters ein anderes Anführungszeichen angeben. Beispielsweise verwendet die folgende Version von category_csv.txt
'%
' als Anführungszeichen:
12,Shows,Musicals,Musical theatre 13,Shows,Plays,%All "non-musical" theatre% 14,Shows,Opera,%All opera, light, and "rock" opera% 15,Concerts,Classical,%All symphony, concerto, and choir concerts%
Der folgende COPY Befehl verwendet QUOTE AS zum Ladencategory_csv.txt
:
copy category from 's3://amzn-s3-demo-bucket/data/category_csv.txt' iam_role 'arn:aws:iam::0123456789012:role/MyRedshiftRole' csv quote as '%';
VENUEMit expliziten Werten für eine IDENTITY Spalte laden
Im folgenden Beispiel wird davon ausgegangen, dass bei der Erstellung der VENUE Tabelle mindestens eine Spalte (z. B. die venueid
Spalte) als IDENTITY Spalte angegeben wurde. Dieser Befehl überschreibt das IDENTITY Standardverhalten der automatischen Generierung von Werten für eine IDENTITY Spalte und lädt stattdessen die expliziten Werte aus der Datei venue.txt. Amazon Redshift prüft nicht, ob doppelte IDENTITY Werte in die Tabelle geladen werden, wenn die IDS Option EXLICIT _ verwendet wird.
copy venue from 's3://amzn-s3-demo-bucket/data/venue.txt' iam_role 'arn:aws:iam::0123456789012:role/MyRedshiftRole' explicit_ids;
TIMEAus einer durch Leerzeichen getrennten Datei laden GZIP
Im folgenden Beispiel wird die TIME Tabelle aus einer durch Leerzeichen getrennten Datei geladen: GZIP
copy time from 's3://amzn-s3-demo-bucket/data/timerows.gz' iam_role 'arn:aws:iam::0123456789012:role/MyRedshiftRole' gzip delimiter '|';
Laden eines Zeit- oder Datumsstempels
Im folgenden Beispiel werden Daten mit formatierten Zeitstempeln geladen.
Anmerkung
Der Wert TIMEFORMAT von unterstützt HH:MI:SS
auch Sekundenbruchteile mit einer Detailgenauigkeit von SS
bis zu einer Mikrosekunde. Die in diesem Beispiel verwendete Datei time.txt
enthält eine einzige Zeile, 2009-01-12
14:15:57.119568
.
copy timestamp1 from 's3://amzn-s3-demo-bucket/data/time.txt' iam_role 'arn:aws:iam::0123456789012:role/MyRedshiftRole' timeformat 'YYYY-MM-DD HH:MI:SS';
Das Ergebnis dieser COPY-Operation ist wie folgt:
select * from timestamp1; c1 ---------------------------- 2009-01-12 14:15:57.119568 (1 row)
Laden von Daten aus einer Datei mit Standardwerten
Im folgenden Beispiel wird eine Variante der VENUE Tabelle in der TICKIT Datenbank verwendet. Stellen Sie sich eine VENUE NEW _-Tabelle vor, die mit der folgenden Anweisung definiert wurde:
create table venue_new( venueid smallint not null, venuename varchar(100) not null, venuecity varchar(30), venuestate char(2), venueseats integer not null default '1000');
Stellen Sie sich eine Datendatei venue_noseats.txt vor, die keine Werte für die VENUESEATS Spalte enthält, wie im folgenden Beispiel gezeigt:
1|Toyota Park|Bridgeview|IL| 2|Columbus Crew Stadium|Columbus|OH| 3|RFK Stadium|Washington|DC| 4|CommunityAmerica Ballpark|Kansas City|KS| 5|Gillette Stadium|Foxborough|MA| 6|New York Giants Stadium|East Rutherford|NJ| 7|BMO Field|Toronto|ON| 8|The Home Depot Center|Carson|CA| 9|Dick's Sporting Goods Park|Commerce City|CO| 10|Pizza Hut Park|Frisco|TX|
Mit der folgenden COPY Anweisung wird die Tabelle erfolgreich aus der Datei geladen und der DEFAULT Wert ('1000') auf die ausgelassene Spalte angewendet:
copy venue_new(venueid, venuename, venuecity, venuestate) from 's3://amzn-s3-demo-bucket/data/venue_noseats.txt' iam_role 'arn:aws:iam::0123456789012:role/MyRedshiftRole' delimiter '|';
Betrachten Sie nun die geladene Tabelle:
select * from venue_new order by venueid; venueid | venuename | venuecity | venuestate | venueseats ---------+----------------------------+-----------------+------------+------------ 1 | Toyota Park | Bridgeview | IL | 1000 2 | Columbus Crew Stadium | Columbus | OH | 1000 3 | RFK Stadium | Washington | DC | 1000 4 | CommunityAmerica Ballpark | Kansas City | KS | 1000 5 | Gillette Stadium | Foxborough | MA | 1000 6 | New York Giants Stadium | East Rutherford | NJ | 1000 7 | BMO Field | Toronto | ON | 1000 8 | The Home Depot Center | Carson | CA | 1000 9 | Dick's Sporting Goods Park | Commerce City | CO | 1000 10 | Pizza Hut Park | Frisco | TX | 1000 (10 rows)
Im folgenden Beispiel wird neben der Annahme, dass keine VENUESEATS Daten in der Datei enthalten sind, auch davon ausgegangen, dass keine VENUENAME Daten enthalten sind:
1||Bridgeview|IL| 2||Columbus|OH| 3||Washington|DC| 4||Kansas City|KS| 5||Foxborough|MA| 6||East Rutherford|NJ| 7||Toronto|ON| 8||Carson|CA| 9||Commerce City|CO| 10||Frisco|TX|
Bei Verwendung derselben Tabellendefinition schlägt die folgende COPY Anweisung fehl, da kein DEFAULT Wert für VENUENAME angegeben wurde und VENUENAME es sich um eine NOT NULL Spalte handelt:
copy venue(venueid, venuecity, venuestate) from 's3://amzn-s3-demo-bucket/data/venue_pipe.txt' iam_role 'arn:aws:iam::0123456789012:role/MyRedshiftRole' delimiter '|';
Stellen Sie sich nun eine Variante der VENUE Tabelle vor, die eine IDENTITY Spalte verwendet:
create table venue_identity( venueid int identity(1,1), venuename varchar(100) not null, venuecity varchar(30), venuestate char(2), venueseats integer not null default '1000');
Gehen Sie wie im vorherigen Beispiel davon aus, dass die VENUESEATS Spalte keine entsprechenden Werte in der Quelldatei hat. Mit der folgenden COPY Anweisung wird die Tabelle einschließlich der vordefinierten IDENTITY Datenwerte erfolgreich geladen, anstatt diese Werte automatisch zu generieren:
copy venue(venueid, venuename, venuecity, venuestate) from 's3://amzn-s3-demo-bucket/data/venue_pipe.txt' iam_role 'arn:aws:iam::0123456789012:role/MyRedshiftRole' delimiter '|' explicit_ids;
Diese Anweisung schlägt fehl, weil sie die IDENTITY Spalte nicht einschließt (sie VENUEID fehlt in der Spaltenliste), aber einen EXPLICIT IDS _-Parameter enthält:
copy venue(venuename, venuecity, venuestate) from 's3://amzn-s3-demo-bucket/data/venue_pipe.txt' iam_role 'arn:aws:iam::0123456789012:role/MyRedshiftRole' delimiter '|' explicit_ids;
Diese Anweisung schlägt fehl, weil sie keinen EXPLICIT IDS _-Parameter enthält:
copy venue(venueid, venuename, venuecity, venuestate) from 's3://amzn-s3-demo-bucket/data/venue_pipe.txt' iam_role 'arn:aws:iam::0123456789012:role/MyRedshiftRole' delimiter '|';
COPYDaten mit der ESCAPE Option
Im folgenden Beispiel wird gezeigt, wie Zeichen geladen werden, die mit dem Trennzeichen übereinstimmen (in diesem Fall dem Pipe-Zeichen). Stellen Sie sicher, dass in der Eingabedatei alle Pipe-Zeichen (|), die Sie laden möchten, mit dem Backslash-Zeichen (\) als Escape-Zeichen markiert sind. Laden Sie dann die Datei mit dem ESCAPE Parameter.
$ more redshiftinfo.txt 1|public\|event\|dwuser 2|public\|sales\|dwuser create table redshiftinfo(infoid int,tableinfo varchar(50)); copy redshiftinfo from 's3://amzn-s3-demo-bucket/data/redshiftinfo.txt' iam_role 'arn:aws:iam::0123456789012:role/MyRedshiftRole' delimiter '|' escape; select * from redshiftinfo order by 1; infoid | tableinfo -------+-------------------- 1 | public|event|dwuser 2 | public|sales|dwuser (2 rows)
Ohne den ESCAPE Parameter schlägt dieser COPY Befehl mit einem Extra column(s)
found
Fehler fehl.
Wichtig
Wenn Sie Ihre Daten mithilfe von a COPY mit dem ESCAPE Parameter laden, müssen Sie den ESCAPE Parameter auch mit Ihrem UNLOAD Befehl angeben, um die reziproke Ausgabedatei zu generieren. Ebenso müssen Sie, wenn Sie UNLOAD den ESCAPE Parameter verwenden, ESCAPE wenn Sie COPY dieselben Daten verwenden.
Aus JSON Beispielen kopieren
In den folgenden Beispielen laden Sie die CATEGORY Tabelle mit den folgenden Daten.
CATID | CATGROUP | CATNAME | CATDESC |
---|---|---|---|
1 | Sport | MLB | Major League Baseball |
2 | Sport | NHL | National Hockey League |
3 | Sport | NFL | National Football League |
4 | Sport | NBA | National Basketball Association |
5 | Konzerte | Klassisch | Alle Symphoniekonzerte, Konzerte und Chorkonzerte |
Themen
Aus JSON Daten mit der Option „Auto“ laden
Um mithilfe der 'auto'
Option aus JSON Daten zu laden, müssen die JSON Daten aus einer Reihe von Objekten bestehen. Die Schlüsselnamen müssen mit den Spaltennamen übereinstimmen. In diesem Fall spielt die Reihenfolge jedoch keine Rolle. Im folgenden werden die Inhalte einer Datei namens gezeigt category_object_auto.json
.
{ "catdesc": "Major League Baseball", "catid": 1, "catgroup": "Sports", "catname": "MLB" } { "catgroup": "Sports", "catid": 2, "catname": "NHL", "catdesc": "National Hockey League" }{ "catid": 3, "catname": "NFL", "catgroup": "Sports", "catdesc": "National Football League" } { "bogus": "Bogus Sports LLC", "catid": 4, "catgroup": "Sports", "catname": "NBA", "catdesc": "National Basketball Association" } { "catid": 5, "catgroup": "Shows", "catname": "Musicals", "catdesc": "All symphony, concerto, and choir concerts" }
Führen Sie den folgenden COPY Befehl aus, um JSON Daten aus der Datendatei im vorherigen Beispiel zu laden.
copy category from 's3://amzn-s3-demo-bucket/category_object_auto.json' iam_role 'arn:aws:iam::0123456789012:role/MyRedshiftRole' json 'auto';
Aus JSON Daten mit der Option „Fall auto ignorieren“ laden
Um mithilfe der 'auto ignorecase'
Option aus JSON Daten zu laden, müssen die JSON Daten aus einer Reihe von Objekten bestehen. Die Groß- und Kleinschreibung der Schlüsselnamen muss nicht mit den Spaltennamen übereinstimmen und die Reihenfolge spielt keine Rolle. Im folgenden werden die Inhalte einer Datei namens gezeigt category_object_auto-ignorecase.json
.
{ "CatDesc": "Major League Baseball", "CatID": 1, "CatGroup": "Sports", "CatName": "MLB" } { "CatGroup": "Sports", "CatID": 2, "CatName": "NHL", "CatDesc": "National Hockey League" }{ "CatID": 3, "CatName": "NFL", "CatGroup": "Sports", "CatDesc": "National Football League" } { "bogus": "Bogus Sports LLC", "CatID": 4, "CatGroup": "Sports", "CatName": "NBA", "CatDesc": "National Basketball Association" } { "CatID": 5, "CatGroup": "Shows", "CatName": "Musicals", "CatDesc": "All symphony, concerto, and choir concerts" }
Führen Sie den folgenden COPY Befehl aus, um JSON Daten aus der Datendatei im vorherigen Beispiel zu laden.
copy category from 's3://amzn-s3-demo-bucket/category_object_auto ignorecase.json' iam_role 'arn:aws:iam::0123456789012:role/MyRedshiftRole' json 'auto ignorecase';
Aus JSON Daten mithilfe einer JSONPaths Datei laden
Wenn die JSON Datenobjekte nicht direkt den Spaltennamen entsprechen, können Sie eine JSONPaths Datei verwenden, um die JSON Elemente Spalten zuzuordnen. Die Reihenfolge in den JSON Quelldaten spielt keine Rolle, aber die Reihenfolge der JSONPaths Dateiausdrücke muss mit der Reihenfolge der Spalten übereinstimmen. Angenommen, Sie verwenden die folgende Datendatei mit dem Namen category_object_paths.json
.
{ "one": 1, "two": "Sports", "three": "MLB", "four": "Major League Baseball" } { "three": "NHL", "four": "National Hockey League", "one": 2, "two": "Sports" } { "two": "Sports", "three": "NFL", "one": 3, "four": "National Football League" } { "one": 4, "two": "Sports", "three": "NBA", "four": "National Basketball Association" } { "one": 6, "two": "Shows", "three": "Musicals", "four": "All symphony, concerto, and choir concerts" }
Die folgende JSONPaths Datei mit dem Namen category_jsonpath.json
ordnet die Quelldaten den Tabellenspalten zu.
{ "jsonpaths": [ "$['one']", "$['two']", "$['three']", "$['four']" ] }
Führen Sie den folgenden COPY Befehl aus, um JSON Daten aus der Datendatei im vorherigen Beispiel zu laden.
copy category from 's3://amzn-s3-demo-bucket/category_object_paths.json' iam_role 'arn:aws:iam::0123456789012:role/MyRedshiftRole' json 's3://amzn-s3-demo-bucket/category_jsonpath.json';
Aus JSON Arrays mithilfe einer JSONPaths Datei laden
Um JSON Daten zu laden, die aus einer Reihe von Arrays bestehen, müssen Sie eine JSONPaths Datei verwenden, um die Array-Elemente den Spalten zuzuordnen. Angenommen, Sie verwenden die folgende Datendatei mit dem Namen category_array_data.json
.
[1,"Sports","MLB","Major League Baseball"] [2,"Sports","NHL","National Hockey League"] [3,"Sports","NFL","National Football League"] [4,"Sports","NBA","National Basketball Association"] [5,"Concerts","Classical","All symphony, concerto, and choir concerts"]
Die folgende JSONPaths Datei mit dem Namen category_array_jsonpath.json
ordnet die Quelldaten den Tabellenspalten zu.
{ "jsonpaths": [ "$[0]", "$[1]", "$[2]", "$[3]" ] }
Führen Sie den folgenden COPY Befehl aus, um JSON Daten aus der Datendatei im vorherigen Beispiel zu laden.
copy category from 's3://amzn-s3-demo-bucket/category_array_data.json' iam_role 'arn:aws:iam::0123456789012:role/MyRedshiftRole' json 's3://amzn-s3-demo-bucket/category_array_jsonpath.json';
Beispiele für die Kopie aus Avro
In den folgenden Beispielen laden Sie die CATEGORY Tabelle mit den folgenden Daten.
CATID | CATGROUP | CATNAME | CATDESC |
---|---|---|---|
1 | Sport | MLB | Major League Baseball |
2 | Sport | NHL | National Hockey League |
3 | Sport | NFL | National Football League |
4 | Sport | NBA | National Basketball Association |
5 | Konzerte | Klassisch | Alle Symphoniekonzerte, Konzerte und Chorkonzerte |
Themen
Laden von Avro-Daten unter Verwendung der Option „auto“
Um Daten aus Avro-Datendateien unter Verwendung des Arguments 'auto'
zu laden, müssen die Feldnamen im Avro-Schema mit den Spaltennamen übereinstimmen. Bei Verwendung des Arguments 'auto'
spielt die Reihenfolge keine Rolle. Im folgenden wird das Schema für eine Datei namens gezeigt category_auto.avro
.
{ "name": "category", "type": "record", "fields": [ {"name": "catid", "type": "int"}, {"name": "catdesc", "type": "string"}, {"name": "catname", "type": "string"}, {"name": "catgroup", "type": "string"}, }
Die Daten in einer Avro-Datei liegen im binären Format vor. Sie können daher nicht von Menschen gelesen werden. Im Folgenden wird eine JSON Darstellung der Daten in der category_auto.avro
Datei gezeigt.
{ "catid": 1, "catdesc": "Major League Baseball", "catname": "MLB", "catgroup": "Sports" } { "catid": 2, "catdesc": "National Hockey League", "catname": "NHL", "catgroup": "Sports" } { "catid": 3, "catdesc": "National Basketball Association", "catname": "NBA", "catgroup": "Sports" } { "catid": 4, "catdesc": "All symphony, concerto, and choir concerts", "catname": "Classical", "catgroup": "Concerts" }
Führen Sie den folgenden COPY Befehl aus, um Daten aus der Avro-Datendatei im vorherigen Beispiel zu laden.
copy category from 's3://amzn-s3-demo-bucket/category_auto.avro' iam_role 'arn:aws:iam::0123456789012:role/MyRedshiftRole' format as avro 'auto';
Laden von Avro-Daten unter Verwendung der Option „auto ignorecase“
Um Daten aus Avro-Datendateien unter Verwendung des Arguments 'auto ignorecase'
zu laden, muss die Groß-/Kleinschreibung der Feldnamen im Avro-Schema nicht mit den Spaltennamen übereinstimmen. Bei Verwendung des Arguments 'auto ignorecase'
spielt die Reihenfolge keine Rolle. Im folgenden wird das Schema für eine Datei namens gezeigt category_auto-ignorecase.avro
.
{ "name": "category", "type": "record", "fields": [ {"name": "CatID", "type": "int"}, {"name": "CatDesc", "type": "string"}, {"name": "CatName", "type": "string"}, {"name": "CatGroup", "type": "string"}, }
Die Daten in einer Avro-Datei liegen im binären Format vor. Sie können daher nicht von Menschen gelesen werden. Im Folgenden wird eine JSON Darstellung der Daten in der category_auto-ignorecase.avro
Datei gezeigt.
{ "CatID": 1, "CatDesc": "Major League Baseball", "CatName": "MLB", "CatGroup": "Sports" } { "CatID": 2, "CatDesc": "National Hockey League", "CatName": "NHL", "CatGroup": "Sports" } { "CatID": 3, "CatDesc": "National Basketball Association", "CatName": "NBA", "CatGroup": "Sports" } { "CatID": 4, "CatDesc": "All symphony, concerto, and choir concerts", "CatName": "Classical", "CatGroup": "Concerts" }
Führen Sie den folgenden COPY Befehl aus, um Daten aus der Avro-Datendatei im vorherigen Beispiel zu laden.
copy category from 's3://amzn-s3-demo-bucket/category_auto-ignorecase.avro' iam_role 'arn:aws:iam::0123456789012:role/MyRedshiftRole' format as avro 'auto ignorecase';
Laden Sie mithilfe einer Datei aus Avro-Daten JSONPaths
Wenn die Feldnamen im Avro-Schema nicht direkt den Spaltennamen entsprechen, können Sie eine JSONPaths Datei verwenden, um die Schemaelemente den Spalten zuzuordnen. Die Reihenfolge der JSONPaths Dateiausdrücke muss mit der Reihenfolge der Spalten übereinstimmen.
Angenommen, Sie verwenden eine Datendatei namens category_paths.avro
, die dieselben Daten wie im vorherigen Beispiel enthält, jedoch mit dem folgenden Schema.
{ "name": "category", "type": "record", "fields": [ {"name": "id", "type": "int"}, {"name": "desc", "type": "string"}, {"name": "name", "type": "string"}, {"name": "group", "type": "string"}, {"name": "region", "type": "string"} ] }
Die folgende JSONPaths Datei mit dem Namen category_path.avropath
ordnet die Quelldaten den Tabellenspalten zu.
{
"jsonpaths": [
"$['id']",
"$['group']",
"$['name']",
"$['desc']"
]
}
Führen Sie den folgenden COPY Befehl aus, um Daten aus der Avro-Datendatei im vorherigen Beispiel zu laden.
copy category from 's3://amzn-s3-demo-bucket/category_object_paths.avro' iam_role 'arn:aws:iam::0123456789012:role/MyRedshiftRole' format avro 's3://amzn-s3-demo-bucket/category_path.avropath ';
Dateien werden für COPY mit der ESCAPE Option vorbereitet
Das folgende Beispiel beschreibt, wie Sie Daten so vorbereiten können, dass Zeilenumbruchzeichen „maskiert“ werden, bevor Sie die Daten mithilfe des COPY Befehls mit dem Parameter in eine Amazon Redshift Redshift-Tabelle importieren. ESCAPE Ohne die Daten für die Abgrenzung der Zeilenumbruchzeichen vorzubereiten, gibt Amazon Redshift Ladefehler zurück, wenn Sie den COPY Befehl ausführen, da das Zeilenumbruchzeichen normalerweise als Datensatztrennzeichen verwendet wird.
Betrachten Sie beispielsweise eine Datei oder eine Spalte in einer externen Tabelle, die Sie in eine Amazon-Redshift-Tabelle kopieren möchten. Wenn die Datei oder Spalte Inhalt im XML -Format oder ähnliche Daten enthält, müssen Sie sicherstellen, dass alle Zeilenumbruchzeichen (\n), die Teil des Inhalts sind, mit dem umgekehrten Schrägstrich (\) maskiert werden.
Eine Datei oder Tabelle, die eingebettete Zeichen für Zeilenumbrüche enthält, bietet ein vergleichsweise einfaches Muster für den Vergleich. Die eingebetteten Zeichen für neue Zeilen folgen wahrscheinlich meistens einem >
-Zeichen, wobei sich dazwischen möglicherweise einige Leerstellen (' '
oder Tabulatorzeichen) befinden, wie Sie im folgenden Beispiel für eine Textdatei namens nlTest1.txt
sehen können.
$ cat nlTest1.txt <xml start> <newline characters provide> <line breaks at the end of each> <line in content> </xml>|1000 <xml> </xml>|2000
Im folgenden Beispiel können Sie ein Textverarbeitungsprogramm ausführen, um die Quelldatei vorab zu bearbeiten und an den nötigen Stellen Escape-Zeichen einzufügen. (Das Zeichen |
soll als Trennzeichen verwendet werden, um Spaltendaten beim Kopieren in eine Amazon-Redshift-Tabelle zu trennen).
$ sed -e ':a;N;$!ba;s/>[[:space:]]*\n/>\\\n/g' nlTest1.txt > nlTest2.txt
Ähnlich können Sie Perl verwenden, um eine vergleichbare Operation auszuführen:
cat nlTest1.txt | perl -p -e 's/>\s*\n/>\\\n/g' > nlTest2.txt
Um die Daten aus der Datei nlTest2.txt
in Amazon Redshift laden zu können, wurde in eine Tabelle mit zwei Spalten erstellt. Die erste Spalte c1 ist eine Zeichenspalte, die -formatierten Inhalt der Datei enthältXML. nlTest2.txt
Die zweite Spalte c2 enthält Ganzzahlwerte, die aus derselben Datei geladen wurden.
Nachdem Sie den sed
Befehl ausgeführt haben, können Sie mithilfe des ESCAPE Parameters Daten aus der nlTest2.txt
Datei korrekt in eine Amazon Redshift Redshift-Tabelle laden.
Anmerkung
Wenn Sie den ESCAPE Parameter in den COPY Befehl einbeziehen, maskiert er eine Reihe von Sonderzeichen, zu denen auch der umgekehrte Schrägstrich (einschließlich Zeilenumbruch) gehört.
copy t2 from 's3://amzn-s3-demo-bucket/data/nlTest2.txt' iam_role 'arn:aws:iam::0123456789012:role/MyRedshiftRole' escape delimiter as '|'; select * from t2 order by 2; c1 | c2 -------------+------ <xml start> <newline characters provide> <line breaks at the end of each> <line in content> </xml> | 1000 <xml> </xml> | 2000 (2 rows)
Sie können Datendateien, die aus externen Datenbanken exportiert wurden, auf ähnliche Weise vorbereiten. Bei einer Oracle-Datenbank können Sie die REPLACE Funktion beispielsweise für jede betroffene Spalte in einer Tabelle verwenden, die Sie in Amazon Redshift kopieren möchten.
SELECT c1, REPLACE(c2, \n',\\n' ) as c2 from my_table_with_xml
Darüber hinaus bieten viele Tools zum Exportieren und Extrahieren, Transformieren und Laden (ETL) von Datenbanken, die routinemäßig große Datenmengen verarbeiten, Optionen zur Angabe von Escapezeichen und Trennzeichen.
Laden eines Shapefile in Amazon Redshift
Die folgenden Beispiele zeigen, wie Sie ein Esri Shapefile mit laden. COPY Weitere Informationen zum Laden von Shapefiles finden Sie unter Laden eines Shapefile in Amazon Redshift.
Laden eines Shapefile
Die folgenden Schritte zeigen, wie Sie mit dem COPY Befehl OpenStreetMap Daten aus Amazon S3 aufnehmen. In diesem Beispiel wird davon ausgegangen, dass das norwegische Shapefile-Archiv von der Download-Site von Geofabrik.shp
, .shx
und.dbf
müssen dasselbe Amazon-S3-Präfix und denselben Dateinamen haben.
Erfassung von Daten ohne Vereinfachung
Mit den folgenden Befehlen werden Tabellen erstellt und Daten erfasst, die ohne Vereinfachung in die maximale Geometriegröße passen. Öffnen Sie das gis_osm_natural_free_1.shp
in Ihrer bevorzugten GIS Software und überprüfen Sie die Spalten in dieser Ebene. Standardmäßig stehen die GEOMETRY Spalten entweder IDENTITY oder an erster Stelle. Wenn eine GEOMETRY Spalte an erster Stelle steht, können Sie die Tabelle wie folgt erstellen.
CREATE TABLE norway_natural ( wkb_geometry GEOMETRY, osm_id BIGINT, code INT, fclass VARCHAR, name VARCHAR);
Oder, wenn eine IDENTITY Spalte an erster Stelle steht, können Sie die Tabelle wie folgt erstellen.
CREATE TABLE norway_natural_with_id ( fid INT IDENTITY(1,1), wkb_geometry GEOMETRY, osm_id BIGINT, code INT, fclass VARCHAR, name VARCHAR);
Jetzt können Sie die Daten mit COPY aufnehmen.
COPY norway_natural FROM 's3://
bucket_name
/shapefiles/norway/gis_osm_natural_free_1.shp' FORMAT SHAPEFILE CREDENTIALS 'aws_iam_role=arn:aws:iam::123456789012:role/MyRoleName'; INFO: Load into table 'norway_natural' completed, 83891 record(s) loaded successfully
Oder Sie können die Daten wie folgt erfassen.
COPY norway_natural_with_id FROM 's3://
bucket_name
/shapefiles/norway/gis_osm_natural_free_1.shp' FORMAT SHAPEFILE CREDENTIALS 'aws_iam_role=arn:aws:iam::123456789012:role/MyRoleName'; INFO: Load into table 'norway_natural_with_id' completed, 83891 record(s) loaded successfully.
Erfassung von Daten mit Vereinfachung
Mit den folgenden Befehlen wird eine Tabelle erstellt und es wird versucht, Daten zu erfassen, die ohne Vereinfachung nicht in die maximale Geometriegröße passen. Untersuchen Sie das gis_osm_water_a_free_1.shp
-Shapefile und erstellen Sie die entsprechende Tabelle wie folgt.
CREATE TABLE norway_water ( wkb_geometry GEOMETRY, osm_id BIGINT, code INT, fclass VARCHAR, name VARCHAR);
Wenn der COPY Befehl ausgeführt wird, führt dies zu einem Fehler.
COPY norway_water FROM 's3://
bucket_name
/shapefiles/norway/gis_osm_water_a_free_1.shp' FORMAT SHAPEFILE CREDENTIALS 'aws_iam_role=arn:aws:iam::123456789012:role/MyRoleName'; ERROR: Load into table 'norway_water' failed. Check 'stl_load_errors' system table for details.
Eine Abfrage von STL_LOAD_ERRORS
zeigt an, dass die Geometrie zu groß ist.
SELECT line_number, btrim(colname), btrim(err_reason) FROM stl_load_errors WHERE query = pg_last_copy_id(); line_number | btrim | btrim -------------+--------------+----------------------------------------------------------------------- 1184705 | wkb_geometry | Geometry size: 1513736 is larger than maximum supported size: 1048447
Um dieses Problem zu beheben, wird der SIMPLIFY AUTO
Parameter dem COPY Befehl hinzugefügt, um Geometrien zu vereinfachen.
COPY norway_water FROM 's3://
bucket_name
/shapefiles/norway/gis_osm_water_a_free_1.shp' FORMAT SHAPEFILE SIMPLIFY AUTO CREDENTIALS 'aws_iam_role=arn:aws:iam::123456789012:role/MyRoleName'; INFO: Load into table 'norway_water' completed, 1989196 record(s) loaded successfully.
Um die Zeilen und Geometrien anzuzeigen, die vereinfacht wurden, fragen Sie ab SVL_SPATIAL_SIMPLIFY
.
SELECT * FROM svl_spatial_simplify WHERE query = pg_last_copy_id(); query | line_number | maximum_tolerance | initial_size | simplified | final_size | final_tolerance -------+-------------+-------------------+--------------+------------+------------+---------------------- 20 | 1184704 | -1 | 1513736 | t | 1008808 | 1.276386653895e-05 20 | 1664115 | -1 | 1233456 | t | 1023584 | 6.11707814796635e-06
Die Verwendung von SIMPLIFY AUTO max_tolerance mit einer geringeren Toleranz als den automatisch berechneten Toleranzen führt wahrscheinlich zu einem Eingabefehler. Verwenden MAXERROR Sie in diesem Fall, um Fehler zu ignorieren.
COPY norway_water FROM 's3://
bucket_name
/shapefiles/norway/gis_osm_water_a_free_1.shp' FORMAT SHAPEFILE SIMPLIFY AUTO 1.1E-05 MAXERROR 2 CREDENTIALS 'aws_iam_role=arn:aws:iam::123456789012:role/MyRoleName'; INFO: Load into table 'norway_water' completed, 1989195 record(s) loaded successfully. INFO: Load into table 'norway_water' completed, 1 record(s) could not be loaded. Check 'stl_load_errors' system table for details.
Fragen Sie SVL_SPATIAL_SIMPLIFY
erneut ab, um den Datensatz zu identifizieren, der COPY nicht geladen werden konnte.
SELECT * FROM svl_spatial_simplify WHERE query = pg_last_copy_id(); query | line_number | maximum_tolerance | initial_size | simplified | final_size | final_tolerance -------+-------------+-------------------+--------------+------------+------------+----------------- 29 | 1184704 | 1.1e-05 | 1513736 | f | 0 | 0 29 | 1664115 | 1.1e-05 | 1233456 | t | 794432 | 1.1e-05
In diesem Beispiel konnte der erste Datensatz nicht eingefügt werden, sodass die Spalte simplified
falsch angezeigt wird. Der zweite Datensatz wurde innerhalb der vorgegebenen Toleranz geladen. Die endgültige Größe ist jedoch größer als bei Verwendung der automatisch berechneten Toleranz ohne Angabe der maximalen Toleranz.
Laden aus einem komprimierten Shapefile
Amazon Redshift COPY unterstützt die Aufnahme von Daten aus einem komprimierten Shapefile. Alle Shapefile-Komponenten müssen dasselbe Amazon-S3-Präfix und dasselbe Komprimierungssuffix aufweisen. Nehmen wir an, Sie möchten die Daten aus dem vorherigen Beispiel laden. In diesem Fall müssen sich die Dateien gis_osm_water_a_free_1.shp.gz
, gis_osm_water_a_free_1.dbf.gz
und gis_osm_water_a_free_1.shx.gz
das gleiche Amazon-S3-Verzeichnis teilen. Der COPY Befehl erfordert die GZIP Option, und die FROM Klausel muss die richtige komprimierte Datei angeben, wie im Folgenden dargestellt.
COPY norway_natural FROM 's3://
bucket_name
/shapefiles/norway/compressed/gis_osm_natural_free_1.shp.gz' FORMAT SHAPEFILE GZIP CREDENTIALS 'aws_iam_role=arn:aws:iam::123456789012:role/MyRoleName'; INFO: Load into table 'norway_natural' completed, 83891 record(s) loaded successfully.
Laden von Daten in eine Tabelle mit einer anderen Spaltenreihenfolge
Wenn Sie eine Tabelle haben, die nicht GEOMETRY
als erste Spalte hat, können Sie die Spalten-Mapping verwenden, um die Spalten der Zieltabelle zuzuordnen. Erstellen Sie z. B. eine Tabelle mit osm_id
als erste Spalte.
CREATE TABLE norway_natural_order ( osm_id BIGINT, wkb_geometry GEOMETRY, code INT, fclass VARCHAR, name VARCHAR);
Laden Sie dann ein Shapefile unter Verwendung des Spalten-Mappings.
COPY norway_natural_order(wkb_geometry, osm_id, code, fclass, name) FROM 's3://
bucket_name
/shapefiles/norway/gis_osm_natural_free_1.shp' FORMAT SHAPEFILE CREDENTIALS 'aws_iam_role=arn:aws:iam::123456789012:role/MyRoleName'; INFO: Load into table 'norway_natural_order' completed, 83891 record(s) loaded successfully.
Laden von Daten in eine Tabelle mit einer Geografiespalte
Wenn Sie eine Tabelle mit einer GEOGRAPHY
-Spalte haben, erfassen Sie zuerst in eine GEOMETRY
-Spalte und wandeln dann die Objekte in GEOGRAPHY
-Objekte um. Zum Beispiel: Nachdem Sie Ihr Shapefile in eine GEOMETRY
-Spalte kopiert haben, ändern Sie die Tabelle, um eine Spalte mit dem Datentyp GEOGRAPHY
hinzuzufügen.
ALTER TABLE norway_natural ADD COLUMN wkb_geography GEOGRAPHY;
Dann konvertieren Sie die Geometrien in Geografien.
UPDATE norway_natural SET wkb_geography = wkb_geometry::geography;
Optional können Sie auch die GEOMETRY
-Spalte entfernen.
ALTER TABLE norway_natural DROP COLUMN wkb_geometry;
COPYBefehl mit der NOLOAD Option
Um Datendateien zu überprüfen, bevor Sie die Daten tatsächlich laden, verwenden Sie die NOLOAD Option zusammen mit dem COPY Befehl. Amazon Redshift analysiert die Eingabedatei und zeigt alle auftretenden Fehler an. Im folgenden Beispiel wird die NOLOAD Option verwendet, und es werden tatsächlich keine Zeilen in die Tabelle geladen.
COPY public.zipcode1 FROM 's3://amzn-s3-demo-bucket/mydata/zipcode.csv' DELIMITER ';' IGNOREHEADER 1 REGION 'us-east-1' NOLOAD CREDENTIALS 'aws_iam_role=arn:aws:iam::123456789012:role/myRedshiftRole'
;Warnings: Load into table 'zipcode1' completed, 0 record(s) loaded successfully.
COPYBefehl mit einem Multibyte-Trennzeichen und der Option ENCODING
Das folgende Beispiel wird LATIN1 aus einer Amazon S3 S3-Datei geladen, die Multibyte-Daten enthält. Der COPY Befehl gibt das Trennzeichen in Oktalform an, um die Felder in der Eingabedatei \302\246\303\254
zu trennen, die als -8859-1 codiert ist. ISO Um dasselbe Trennzeichen in -8 anzugeben, geben Sie an. UTF DELIMITER '¦ì'
COPY latin1 FROM 's3://amzn-s3-demo-bucket/multibyte/myfile' IAM_ROLE 'arn:aws:iam::123456789012:role/myRedshiftRole' DELIMITER '\302\246\303\254' ENCODING ISO88591