CREATE EXTERNAL TABLE - 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.

CREATE EXTERNAL TABLE

Erstellt eine neue externe Tabelle im angegebenen Schema. Alle externen Tabellen müssen in einem externen Schema erstellt werden. Externe Schemata und externe Tabellen unterstützen keine Suchpfade. Weitere Informationen finden Sie unter CREATE EXTERNAL SCHEMA.

Zusätzlich zu externen Tabellen, die mit dem CREATE EXTERNAL TABLE Befehl erstellt wurden, kann Amazon Redshift auf externe Tabellen verweisen, die in einem AWS Lake Formation OR-Katalog AWS Glue oder einem Apache Hive-Metastore definiert sind. Verwenden Sie den Befehl CREATE EXTERNAL SCHEMA, um eine externe Datenbank zu registrieren, die im externen Katalog definiert ist, und um die externen Tabellen für die Verwendung in Amazon Redshift zur Verfügung zu stellen. Wenn die externe Tabelle in einem AWS Lake Formation Or-Katalog AWS Glue - oder Hive-Metastore vorhanden ist, müssen Sie die Tabelle nicht mithilfe von erstellen. CREATE EXTERNAL TABLE Um externe Tabellen anzuzeigen, führen Sie eine Abfrage für die Systemansicht SVV_EXTERNAL_TABLES aus.

Durch CREATE EXTERNAL TABLE Ausführen des AS-Befehls können Sie eine externe Tabelle auf der Grundlage der Spaltendefinition aus einer Abfrage erstellen und die Ergebnisse dieser Abfrage in Amazon S3 schreiben. Die Ergebnisse liegen im Apache Parquet- oder im Textformat mit Trennzeichen vor. Wenn die externe Tabelle über mindestens einen Partitionsschlüssel verfügt, partitioniert Amazon Redshift neue Dateien entsprechend diesen Partitionsschlüsseln und registriert neue Partitionen automatisch im externen Katalog. Weitere Informationen zu CREATE EXTERNAL TABLE AS finden Sie unterNutzungshinweise.

Sie können eine externe Tabelle mit derselben SELECT Syntax abfragen, die Sie für andere Amazon Redshift Redshift-Tabellen verwenden. Sie können die INSERT Syntax auch verwenden, um neue Dateien in den Speicherort der externen Tabelle auf Amazon S3 zu schreiben. Weitere Informationen finden Sie unter INSERT(externe Tabelle).

Um eine Ansicht mit einer externen Tabelle zu erstellen, fügen Sie die WITH SCHEMA BINDING NO-Klausel in die CREATE VIEW Anweisung ein.

Sie können nicht CREATE EXTERNAL TABLE innerhalb einer Transaktion (BEGIN...END) arbeiten. Weitere Informationen zu Transaktionen finden Sie unter Serialisierbare Isolierung.

Erforderliche Berechtigungen

Zum Erstellen externer Tabellen müssen Sie der Eigentümer des externen Schemas oder ein Superuser sein. Um die Inhaberschaft an einem externen Schema zu übertragen, verwenden Sie ALTER SCHEMA Um den Besitzer zu ändern. Der Zugriff auf externe Tabellen wird durch den Zugriff auf die externen Schemata gesteuert. Sie können für eine externe Tabelle keine Berechtigungen gewähren (GRANT) oder widerrufen (REVOKE). Gewähren oder widerrufen Sie USAGE stattdessen das externe Schema.

Die Nutzungshinweise enthalten zusätzliche Informationen zu spezifischen Berechtigungen für externe Tabellen.

Syntax

CREATE EXTERNAL TABLE
external_schema.table_name
(column_name data_type [, …] )
[ PARTITIONED BY (col_name data_type [, … ] )]
[ { ROW FORMAT DELIMITED row_format |
  ROW FORMAT SERDE 'serde_name'
  [ WITH SERDEPROPERTIES ( 'property_name' = 'property_value' [, ...] ) ] } ]
STORED AS file_format
LOCATION { 's3://bucket/folder/' | 's3://bucket/manifest_file' }
[ TABLE PROPERTIES ( 'property_name'='property_value' [, ...] ) ]

Im Folgenden finden Sie die Syntax für CREATE EXTERNAL TABLE AS.

CREATE EXTERNAL TABLE
external_schema.table_name
[ PARTITIONED BY (col_name [, … ] ) ]
[ ROW FORMAT DELIMITED row_format ]
STORED AS file_format
LOCATION { 's3://bucket/folder/' }
[ TABLE PROPERTIES ( 'property_name'='property_value' [, ...] ) ]
 AS
 { select_statement }
         

Parameter

external_schema.table_name

Der Name der Tabelle, die erstellt werden soll, qualifiziert durch einen externen Schemanamen. Externe Tabellen müssen in einem externen Schema erstellt werden. Weitere Informationen finden Sie unter CREATE EXTERNAL SCHEMA.

Die maximale Länge des Tabellennamens beträgt 127 Bytes; längere Namen werden bei 127 Bytes abgeschnitten. Sie können UTF -8 Multibyte-Zeichen bis zu einem Maximum von vier Byte verwenden. Amazon Redshift erzwingt ein Limit von 9.900 Tabellen pro Cluster, einschließlich benutzerdefinierter temporärer Tabellen und temporärer Tabellen, die von Amazon Redshift während der Abfrageverarbeitung oder Systemwartung erstellt werden. Optional können Sie die Tabelle mit dem Datenbanknamen qualifizieren. Im folgenden Beispiel ist der Datenbankname spectrum_db, der Name des externen Schemas spectrum_schema und der Tabellenname test.

create external table spectrum_db.spectrum_schema.test (c1 int) stored as parquet location 's3://amzn-s3-demo-bucket/myfolder/';

Wenn die angegebene Datenbank oder das angegebene Schema nicht vorhanden sind, wird die Tabelle nicht erstellt, und die Anweisung gibt einen Fehler zurück. Sie können in den Systemdatenbanken template0, template1, padb_harvest oder sys:internal keine Tabellen oder Ansichten erstellen.

Der Tabellenname muss für das angegebene Schema eindeutig sein.

Weitere Informationen zu gültigen Namen finden Sie unter Namen und Kennungen.

( column_name data_type )

Der Name und der Datentyp jeder Spalte, die erstellt wird.

Die maximale Länge des Spaltennamens beträgt 127 Bytes; längere Namen werden bei 127 Bytes abgeschnitten. Sie können UTF -8 Multibyte-Zeichen bis zu einem Maximum von vier Byte verwenden. Sie können keine Spaltennamen "$path" oder "$size" festlegen. Weitere Informationen zu gültigen Namen finden Sie unter Namen und Kennungen.

Standardmäßig erstellt Amazon Redshift externe Tabellen mit den Pseudospalten $path und $size. Sie können die Erstellung von Pseudospalten für eine Sitzung deaktivieren, indem Sie den spectrum_enable_pseudo_columns-Konfigurationsparameter auf false setzen. Weitere Informationen finden Sie unter Pseudospalten .

Falls Pseudospalten aktiviert sind, können Sie höchstens 1.598 Spalten in einer einzelnen Tabelle definieren. Wenn Pseudospalten nicht aktiviert sind, können Sie höchstens 1.600 Spalten in einer einzelnen Tabelle definieren.

Wenn Sie eine „breite Tabelle“ erstellen, achten Sie darauf, dass Ihre Spaltenliste nicht die Zeilenbreitengrenzen überschreitet, um während der Verarbeitung von Lasten und Abfragen sofort Ergebnisse bereitzustellen. Weitere Informationen finden Sie unter Nutzungshinweise.

Für einen CREATE EXTERNAL TABLE AS-Befehl ist keine Spaltenliste erforderlich, da Spalten aus der Abfrage abgeleitet werden.

data_type

Die folgenden Datentypen werden unterstützt:

  • SMALLINT (INT2)

  • INTEGER (INT, INT4)

  • BIGINT (INT8)

  • DECIMAL (NUMERIC)

  • REAL (FLOAT4)

  • DOUBLE PRECISION (FLOAT8)

  • BOOLEAN (BOOL)

  • CHAR (CHARACTER)

  • VARCHAR (CHARACTER VARYING)

  • VARBYTE(CHARACTERVARYING) — kann mit Parquet und ORC Datendateien und nur mit nicht partitionierten Tabellen verwendet werden.

  • DATE— kann nur mit Text-, Parquet- oder ORC Datendateien oder als Partitionsspalte verwendet werden.

  • TIMESTAMP

Denn DATE Sie können die Formate wie unten beschrieben verwenden. Für Monatswerte, die in Ziffern dargestellt werden, werden die folgenden Formate unterstützt:

  • mm-dd-yyyy, beispielsweise 05-01-2017. Dies ist die Standardeinstellung.

  • yyyy-mm-dd, wenn das Jahr mit mehr als zwei Ziffern dargestellt werden soll. Beispiel, 2017-05-01.

Für Monatswerte, die mit einer Abkürzung aus drei Buchstaben dargestellt werden, werden die folgenden Formate unterstützt:

  • mmm-dd-yyyy, beispielsweise may-01-2017. Dies ist die Standardeinstellung.

  • dd-mmm-yyyy, wenn das Jahr mit mehr als zwei Ziffern dargestellt werden soll. Beispiel, 01-may-2017.

  • yyyy-mmm-dd, wenn das Jahr mit mehr als zwei Ziffern dargestellt werden soll. Beispiel, 2017-may-01.

Für Jahreswerte, die konstant unter 100 liegen, wird das Jahr wie folgt berechnet:

  • Wenn das Jahr weniger als 70 beträgt, wird das Jahr als das Jahr plus 2000 berechnet. Im Format mm-dd-yyyy wird das Datum 05-01-17 beispielsweise zu 05-01-2017 konvertiert.

  • Wenn das Jahr weniger als 100 beträgt, aber mehr als 69, wird das Jahr als das Jahr plus 1900 berechnet. Im Format mm-dd-yyyy wird das Datum 05-01-89 beispielsweise zu 05-01-1989 konvertiert.

  • Für Jahreswerte, die mit zwei Ziffern dargestellt werden, müssen führende Nullen hinzugefügt werden, um das Jahr mit vier Ziffern darzustellen.

Die Zeitstempelwerte in Textdateien müssen das Format yyyy-mm-dd HH:mm:ss.SSSSSS haben, wie der folgende Zeitstempelwert zeigt: 2017-05-01 11:30:59.000000.

Die Länge einer VARCHAR Spalte wird in Byte und nicht in Zeichen definiert. Eine Spalte VARCHAR (12) kann beispielsweise 12 Einzelbyte-Zeichen oder 6 Zwei-Byte-Zeichen enthalten. Wenn Sie eine externe Tabelle abfragen, werden die Ergebnisse gekürzt, damit sie der definierten Spaltengröße entsprechen, ohne dass ein Fehler zurückgegeben wird. Weitere Informationen finden Sie unter Speicherung und Bereiche.

Um eine optimale Leistung zu erzielen, empfehlen wir, die kleinste Spaltengröße anzugeben, die ihren Daten entspricht. Verwenden Sie die Funktion OCTET_ LENGTH, um die maximale Größe in Byte für Werte in einer Spalte zu ermitteln. Das folgende Beispiel gibt die maximale Größe von Werten in der Spalte „E-Mail“ zurück.

select max(octet_length(email)) from users; max --- 62
PARTITIONEDBY (spaltenname data_type [,...])

Eine Klausel, die eine partitionierte Tabelle mit einer oder mehreren Partitionsspalten festlegt. Für jede angegebene Kombination wird ein eigenes Datenverzeichnis verwendet. Dies kann die Abfrageleistung in einigen Fällen verbessern. In den Tabellendaten selbst sind keine partitionierten Spalten vorhanden. Wenn Sie einen Wert für col_name verwenden, der mit einer Tabellenspalte identisch ist, erhalten Sie einen Fehler.

Nachdem Sie eine partitionierte Tabelle erstellt haben, ändern Sie die Tabelle mit einerALTER TABLE... ADD PARTITION -Anweisung, um neue Partitionen im externen Katalog zu registrieren. Wenn Sie eine Partition hinzufügen, definieren Sie den Speicherort des Unterordners auf Amazon S3, der die Partitionsdaten enthält.

Wenn die Tabelle beispielsweise mit definiert spectrum.lineitem_part istPARTITIONED BY (l_shipdate date), führen Sie den folgenden ALTER TABLE Befehl aus, um eine Partition hinzuzufügen.

ALTER TABLE spectrum.lineitem_part ADD PARTITION (l_shipdate='1992-01-29') LOCATION 's3://spectrum-public/lineitem_partition/l_shipdate=1992-01-29';

Wenn Sie CREATE EXTERNAL TABLE AS verwenden, müssen Sie nicht ALTERTABLE... ausführen ADDPARTITION. Amazon Redshift registriert neue Partitionen automatisch im externen Katalog. Amazon Redshift schreibt auch automatisch die entsprechenden Daten in Partitionen in Amazon S3, basierend auf dem Partitionsschlüssel oder den Schlüsseln, die in der Tabelle definiert sind.

Um Partitionen anzuzeigen, führen Sie eine Abfrage für die Systemansicht SVV_EXTERNAL_PARTITIONS aus.

Anmerkung

Für einen CREATE EXTERNAL TABLE AS-Befehl müssen Sie den Datentyp der Partitionsspalte nicht angeben, da diese Spalte von der Abfrage abgeleitet ist.

ROWFORMATDELIMITEDZeilenformat

Eine Klausel, die das Format der zugrundeliegenden Daten angibt. Die möglichen Werte für rowformat sind wie folgt:

  • LINESTERMINATEDVON 'Delimiter'

  • FIELDSTERMINATEDVON 'delimiter'

Geben Sie ein einzelnes ASCII Zeichen für 'Delimiter' an. Sie können nicht druckbare ASCII Zeichen mit Oktal angeben, und zwar in '\ ddd'dem dFormat, das eine Oktalziffer (0—7) bis zu '\ 177' enthält. Im folgenden Beispiel wird das Zeichen BEL (Glocke) mit Oktal angegeben.

ROW FORMAT DELIMITED FIELDS TERMINATED BY '\007'

Wenn ROW FORMAT es weggelassen wird, ist das Standardformat DELIMITED FIELDS TERMINATED BY '\ A' (Beginn der Überschrift) und LINES TERMINATED BY'\n'(Newline).

ROWFORMATSERDE'serde_name'
[WITHSERDEPROPERTIES('Eigenschaftsname' = 'Eigenschaftswert' [,...])]

Eine Klausel, die das SERDE Format für die zugrunde liegenden Daten spezifiziert.

'serde_name'

Der Name der SerDe. Sie können die folgenden Formate angeben:

  • org.apache.hadoop.hive.serde2. RegexSerDe

  • com.amazonaws.glue.serde. GrokSerDe

  • org.apache.hadoop.hive.Serde2.o penCSVSerde

    Dieser Parameter unterstützt die folgende Eigenschaft für O: SerDe penCSVSerde

    'wholeFile' = 'true'

    Stellen Sie die wholeFile Eigenschaft auf eintrue, um Zeilenumbruchzeichen (\n) in Zeichenketten in Anführungszeichen für CSV Open-Anfragen korrekt zu analysieren.

  • org.openx.data.jsonserde. JsonSerDe

    • Das unterstützt JSON SERDE auch Ion-Dateien.

    • Sie JSON müssen wohlgeformt sein.

    • Die Zeitstempel sind in Ion und JSON müssen das Format ISO86 01 verwenden.

    • Dieser Parameter unterstützt die folgende SerDe Eigenschaft für JsonSerDe:

      'strip.outer.array'='true'

      Verarbeitet JSON Ion/-Dateien, die ein sehr großes Array in äußeren Klammern ([...]) enthalten, als ob es mehrere JSON Datensätze innerhalb des Arrays enthalten würde.

  • com.amazon.ionhiveserde. IonHiveSerDe

    Das ION Amazon-Format bietet neben Datentypen auch Text- und Binärformate. Bei einer externen Tabelle, die auf Daten im ION Format verweist, ordnen Sie jede Spalte in der externen Tabelle dem entsprechenden Element in den ION Formatdaten zu. Weitere Informationen finden Sie unter Amazon Ion. Sie müssen gegebenenfalls auch die Ein- und Ausgabeformate angeben.

WITHSERDEPROPERTIES('property_name' = 'property_value' [,...])]

Optional können Sie Namen und Werte der Eigenschaften getrennt durch Kommas angeben.

Wenn ROW FORMAT es weggelassen wird, ist das Standardformat DELIMITED FIELDS TERMINATED BY '\ A' (Beginn der Überschrift) und LINES TERMINATED BY'\n'(Newline).

STOREDALS file_format

Das Dateiformat für Datendateien.

Gültige Formate sind folgende:

  • PARQUET

  • RCFILE( ColumnarSerDe nur zur Verwendung von Daten, nicht) LazyBinaryColumnarSerDe

  • SEQUENCEFILE

  • TEXTFILE(für Textdateien, einschließlich JSON Dateien).

  • ORC

  • AVRO

  • INPUTFORMAT'input_format_classname' 'output_format_classname' OUTPUTFORMAT

Der CREATE EXTERNAL TABLE AS-Befehl unterstützt nur zwei Dateiformate, und. TEXTFILE PARQUET

Geben Sie für INPUTFORMAT und OUTPUTFORMAT einen Klassennamen an, wie das folgende Beispiel zeigt.

'org.apache.hadoop.mapred.TextInputFormat'
LOCATION{'s3://Bucket/Ordner /' | 's3://Bucket/manifest_file '}

Der Pfad zum -Bucket oder Amazon-S3-Ordner enthält die Datendateien oder eine Manifestdatei, die eine Liste der Amazon-S3-Objektpfade enthält. Die Buckets müssen sich in derselben AWS Region wie der Amazon Redshift Redshift-Cluster befinden. Eine Liste der unterstützten AWS Regionen finden Sie unter. Überlegungen zu Amazon Redshift Spectrum

Wenn im Pfad ein Bucket oder Ordner wie 's3://amzn-s3-demo-bucket/custdata/' angegeben wird, scannt Redshift Spectrum die Dateien im angegebenen Bucket oder Ordner und in allen Unterordnern. Redshift Spectrum ignoriert verborgene Dateien sowie Dateien, die mit einem Punkt oder Unterstrich beginnen.

Wenn der Pfad eine Manifestdatei angibt, muss das 's3://bucket/manifest_file'-Argument explizit auf eine einzelne Datei verweisen, zum Beispiel 's3://amzn-s3-demo-bucket/manifest.txt'. Es darf kein Schlüsselpräfix referenzieren.

Das Manifest ist eine Textdatei in einem JSON Format, das die URL Daten jeder Datei, die aus Amazon S3 geladen werden soll, und die Größe der Datei in Byte auflistet. Das URL beinhaltet den Bucket-Namen und den vollständigen Objektpfad für die Datei. Die im Manifest angegebenen Dateien können sich in verschiedenen Buckets befinden, aber alle Buckets müssen sich in derselben AWS Region wie der Amazon Redshift Redshift-Cluster befinden. Wenn eine Datei zweimal aufgelistet wird, wird die Datei zweimal geladen. Das folgende Beispiel zeigt das JSON für ein Manifest, das drei Dateien lädt.

{ "entries": [ {"url":"s3://amzn-s3-demo-bucket1/custdata.1", "meta": { "content_length": 5956875 } }, {"url":"s3://amzn-s3-demo-bucket1/custdata.2", "meta": { "content_length": 5997091 } }, {"url":"s3://amzn-s3-demo-bucket2/custdata.1", "meta": { "content_length": 5978675 } } ] }

Sie können die Aufnahme einer bestimmten Datei obligatorisch machen. Fügen Sie dazu eine mandatory-Option auf Dateiebene in das Manifest ein. Wenn Sie eine externe Tabelle mit einer fehlenden obligatorischen Datei abfragen, schlägt die SELECT Anweisung fehl. Stellen Sie sicher, dass alle in der Definition der externen Tabelle enthaltenen Dateien vorhanden sind. Wenn sie nicht alle vorhanden sind, wird ein Fehler angezeigt, in dem die erste obligatorische Datei angezeigt wird, die nicht gefunden wird. Das folgende Beispiel zeigt das JSON für ein Manifest, bei dem die mandatory Option auf gesetzt isttrue.

{ "entries": [ {"url":"s3://amzn-s3-demo-bucket1/custdata.1", "mandatory":true, "meta": { "content_length": 5956875 } }, {"url":"s3://amzn-s3-demo-bucket1/custdata.2", "mandatory":false, "meta": { "content_length": 5997091 } }, {"url":"s3://amzn-s3-demo-bucket2/custdata.1", "meta": { "content_length": 5978675 } } ] }

Um auf Dateien zu verweisen, die mit erstellt wurdenUNLOAD, können Sie das Manifest verwenden, das UNLOAD mit dem MANIFEST Parameter erstellt wurde. Die Manifestdatei ist mit einer Manifestdatei für COPYvon Amazon S3 kompatibel, es werden jedoch andere Schlüssel verwendet. Nicht verwendete Schlüssel werden ignoriert.

TABLEPROPERTIES('property_name' = 'property_value' [,...])

Eine Klausel, die die Tabellendefinition für Tabelleneigenschaften festlegt.

Anmerkung

Bei Tabelleneigenschaften muss die Groß-/Kleinschreibung beachtet werden.

'compression_type'='value'

Eine Eigenschaft, die den Komprimierungstyp festlegt, der verwendet wird, wenn der Dateiname keine Erweiterung enthält. Wenn Sie diese Eigenschaft festlegen und eine Dateierweiterung vorhanden ist, wird die Erweiterung ignoriert und der von der Eigenschaft festgelegte Wert verwendet. Gültige Werte für den Komprimierungstyp sind folgende:

  • bzip2

  • gzip

  • Keine

  • snappy

'data_cleansing_enabled'='true / false’

Diese Eigenschaft legt fest, ob die Datenverarbeitung für die Tabelle aktiviert ist. Wenn 'data_cleansing_enabled' auf „true“ festgelegt ist, ist die Datenverarbeitung für die Tabelle aktiviert. Wenn 'data_cleansing_enabled' auf „false“ gesetzt ist, ist die Datenverarbeitung für die Tabelle deaktiviert. Im Folgenden finden Sie eine Liste der Datenverarbeitungseigenschaften auf Tabellenebene, die von dieser Eigenschaft gesteuert werden:

  • column_count_mismatch_handling

  • invalid_char_handling

  • numeric_overflow_handling

  • replacement_char

  • surplus_char_handling

Beispiele finden Sie unter Beispiele für die Datenverarbeitung.

'invalid_char_handling'='value'

Gibt die Aktion an, die ausgeführt werden soll, wenn die Abfrageergebnisse ungültige UTF Werte mit einer Länge von bis zu 8 Zeichen enthalten. Sie können die folgenden Aktionen festlegen:

DISABLED

Führt keine ungültige Zeichenbehandlung durch.

FAIL

Bricht Abfragen ab, die Daten mit ungültigen Werten von UTF -8 zurückgeben.

SET_ZU_ NULL

Ersetzt ungültige UTF -8-Werte durch Null.

DROP_ROW

Ersetzt jeden Wert in der Zeile durch null.

REPLACE

Ersetzt das ungültige Zeichen durch das Ersetzungszeichen, das Sie mit replacement_char angeben.

'replacement_char'='character

Gibt das Ersetzungszeichen an, das beim Festlegen von invalid_char_handling auf REPLACE verwendet werden soll.

'numeric_overflow_handling'='value’

Gibt die Aktion an, die ausgeführt werden soll, wenn ORC Daten eine Ganzzahl (z. BIGINT B. int64) enthalten, die größer als die Spaltendefinition ist (z. SMALLINT B. int16). Sie können die folgenden Aktionen festlegen:

DISABLED

Die ungültige Zeichenbehandlung ist deaktiviert.

FAIL

Brechen Sie die Abfrage ab, wenn die Daten ungültige Zeichen enthalten.

SET_ZU_ NULL

Setzen Sie ungültige Zeichen auf null.

DROP_ROW

Setzen Sie jeden Wert in der Zeile auf null.

'surplus_bytes_handling'='Wert'

Gibt an, wie mit geladenen Daten umgegangen werden soll, die die Länge des für Spalten mit VARBYTE Daten definierten Datentyps überschreiten. Standardmäßig legt Redshift Spectrum den Wert für Daten auf null fest, die die Breite der Spalte überschreiten.

Sie können die folgenden Aktionen angeben, die ausgeführt werden sollen, wenn die Abfrage Daten zurückgibt, die die Länge des Datentyps überschreiten:

SET_ZU_ NULL

Ersetzt Daten, die die Spaltenbreite überschreiten, durch null.

DISABLED

Führt keine Behandlung für überschüssige Bytes durch.

FAIL

Bricht Abfragen ab, die Daten zurückgeben, die die Spaltenbreite überschreiten.

DROP_ROW

Entfernt alle Zeilen, deren Daten die Spaltenbreite überschreiten.

TRUNCATE

Entfernt die Zeichen, die die maximale Anzahl der Zeichen überschreiten, die für die Spalte definiert sind.

'surplus_char_handling'='value'

Gibt an, wie mit geladenen Daten umgegangen werden soll, die die Länge des Datentyps überschreiten, der für Spalten mit VARCHARCHAR, oder Zeichenkettendaten definiert ist. Standardmäßig legt Redshift Spectrum den Wert für Daten auf null fest, die die Breite der Spalte überschreiten.

Sie können die folgenden Aktionen angeben, die ausgeführt werden sollen, wenn die Abfrage Daten zurückgibt, die die Spaltenbreite überschreiten:

SET_ZU_ NULL

Ersetzt Daten, die die Spaltenbreite überschreiten, durch null.

DISABLED

Führt keine überzählige Zeichenbehandlung durch.

FAIL

Bricht Abfragen ab, die Daten zurückgeben, die die Spaltenbreite überschreiten.

DROP_ROW

Ersetzt jeden Wert in der Zeile durch null.

TRUNCATE

Entfernt die Zeichen, die die maximale Anzahl der Zeichen überschreiten, die für die Spalte definiert sind.

'column_count_mismatch_handling'='value’

Identifiziert, ob die Datei weniger oder mehr Werte für eine Zeile enthält als die in der externen Tabellendefinition angegebene Anzahl von Spalten. Diese Eigenschaft ist nur für ein unkomprimiertes Textdateiformat verfügbar. Sie können die folgenden Aktionen festlegen:

DISABLED

Die Eigenschaft zum Umgang mit nicht übereinstimmenden Spalten ist deaktiviert.

FAIL

Die Abfrage schlägt fehl, wenn eine Nichtübereinstimmung bei der Spaltenanzahl festgestellt wird.

SET_ZU_ NULL

Füllen Sie fehlende Werte mit NULL und ignorieren Sie die zusätzlichen Werte in jeder Zeile.

DROP_ROW

Alle Zeilen, die einen Fehler bei der Spaltenanzahl enthalten, werden vom Scan ausgeschlossen.

'numRows' = 'Zeilenanzahl'

Eine Eigenschaft, die den numRows Wert für die Tabellendefinition festlegt. Um die Statistiken einer externen Tabelle explizit zu aktualisieren, legen Sie die numRows Eigenschaft so fest, dass sie die Größe der Tabelle angibt. Amazon Redshift analysiert keine externen Tabellen, um die Tabellenstatistiken zu generieren, die der Abfrageoptimierer verwendet, um einen Abfrageplan zu erstellen. Wenn für eine externe Tabelle keine Tabellenstatistiken festgelegt sind, generiert Amazon Redshift einen Abfrageausführungsplan basierend auf der Annahme, dass externe Tabellen die größeren Tabellen und lokale Tabellen die kleineren Tabellen sind.

'skip.header.line.count'='line_count'

Eine Eigenschaft, die die Anzahl der Reihen festgelegt, die am Anfang jeder Quelldatei übersprungen wird.

'serialization.null.format'=' '

Eine Eigenschaft, die Spectrum festlegt, muss einen NULL-Wert zurückgeben, wenn eine exakte Übereinstimmung mit dem in einem Feld angegebenen Text besteht.

'orc.schema.resolution'='mapping_type'

Eine Eigenschaft, die den Spaltenzuordnungstyp für Tabellen festlegt, die das ORC Datenformat verwenden. Für andere Datenformate wird diese Eigenschaft ignoriert.

Gültige Werte für den Spalten-Mapping-Typ sind folgende:

  • Name

  • position

Wenn die Eigenschaft orc.schema.resolution weggelassen wird, werden die Spalten standardmäßig nach Name zugewiesen. Wenn orc.schema.resolution auf einen anderen Wert als 'name' oder 'position' gesetzt wird, werden die Spalten nach Position zugewiesen. Weitere Informationen zum Spalten-Mapping finden Sie unter Zuordnen von externen Tabellenspalten zu ORC Spalten.

Anmerkung

Der COPY Befehl wird ORC Datendateien nur nach Position zugeordnet. Die Tabelleneigenschaft orc.schema.resolution hat keine Auswirkung auf das Befehlsverhalten. COPY

'write.parallel'='on / off’

Eine Eigenschaft, die festlegt, ob CREATE EXTERNAL TABLE AS Daten parallel schreiben soll. Standardmäßig schreibt CREATE EXTERNAL TABLE AS Daten parallel in mehrere Dateien, je nach Anzahl der Slices im Cluster. Die Standardoption ist eingeschaltet. Wenn 'write.parallel' auf off gesetzt ist, schreibt CREATE EXTERNAL TABLE AS seriell in eine oder mehrere Datendateien auf Amazon S3. Diese Tabelleneigenschaft gilt auch für alle nachfolgenden Anweisungen INSERT in derselben externen Tabelle.

‘write.maxfilesize.mb’=‘size’

Eine Eigenschaft, die die maximale Größe (in MB) jeder Datei festlegt, die von CREATE EXTERNAL TABLE AS in Amazon S3 geschrieben wird. Die Größe muss eine gültige Ganzzahl zwischen 5 und 6.200 sein. Die standardmäßige maximale Dateigröße beträgt 6.200 MB. Diese Tabelleneigenschaft gilt auch für alle INSERT nachfolgenden Anweisungen in derselben externen Tabelle.

‘write.kms.key.id’=‘value

Sie können einen AWS Key Management Service Schlüssel angeben, um die serverseitige Verschlüsselung (SSE) für Amazon S3 S3-Objekte zu aktivieren, wobei der Wert einer der folgenden Werte ist:

  • autoum den im Amazon S3 S3-Bucket gespeicherten AWS KMS Standardschlüssel zu verwenden.

  • kms-key, den Sie zur Verschlüsselung von Daten angeben.

select-statement

Eine Anweisung, die mindestens eine Zeile in die externe Tabelle einfügt, indem eine beliebige Abfrage definiert wird. Alle von der Abfrage erzeugten Zeilen werden auf der Grundlage der Tabellendefinition entweder in Text- oder in Parquet-Format in Amazon S3 geschrieben.

Eine Sammlung von Beispielen ist unter Beispiele verfügbar.