ALTER TABLE - Amazon Redshift

ALTER TABLE

Ändert die Definition einer Datenbanktabelle oder einer externen Amazon-Redshift Spectrum-Tabelle. Dieser Befehl aktualisiert die Werte und Eigenschaften, die von CREATE TABLE oder CREATE EXTERNAL TABLE festgelegt werden.

Sie können ALTER TABLE nicht für eine externe Tabelle innerhalb eines Transaktionsblocks (BEGIN ... END) ausführen. Weitere Informationen Transaktionen finden Sie unter Serialisierbare Isolierung.

ALTER TABLE sperrt die Tabelle für Lese- und Schreibvorgänge, bis die die Operation ALTER TABLE umschließende Transaktion abgeschlossen ist, es sei denn, in der Dokumentation ist ausdrücklich angegeben, dass Sie Daten abfragen oder andere Operationen an der Tabelle ausführen können, während sie geändert wird.

Erforderliche Berechtigungen

Für ALTER TABLE sind folgende Berechtigungen erforderlich:

  • Superuser

  • Benutzer mit der Berechtigung ALTER TABLE

  • Tabellen- oder Schemabesitzer

Syntax

ALTER TABLE table_name 
{
ADD table_constraint 
| DROP CONSTRAINT constraint_name [ RESTRICT | CASCADE ] 
| OWNER TO new_owner 
| RENAME TO new_name 
| RENAME COLUMN column_name TO new_name            
| ALTER COLUMN column_name TYPE new_data_type
| ALTER COLUMN column_name ENCODE new_encode_type     
| ALTER COLUMN column_name ENCODE encode_type, 
| ALTER COLUMN column_name ENCODE encode_type, .....;      
| ALTER DISTKEY column_name 
| ALTER DISTSTYLE ALL       
| ALTER DISTSTYLE EVEN
| ALTER DISTSTYLE KEY DISTKEY column_name 
| ALTER DISTSTYLE AUTO             
| ALTER [COMPOUND] SORTKEY ( column_name [,...] ) 
| ALTER SORTKEY AUTO 
| ALTER SORTKEY NONE
| ALTER ENCODE AUTO
| ADD [ COLUMN ] column_name column_type
  [ DEFAULT default_expr ]
  [ ENCODE encoding ]
  [ NOT NULL | NULL ] |
| DROP [ COLUMN ] column_name [ RESTRICT | CASCADE ] }

where table_constraint is:

[ CONSTRAINT constraint_name ]
{ UNIQUE ( column_name [, ... ] )  
| PRIMARY KEY ( column_name [, ... ] ) 
| FOREIGN KEY (column_name [, ... ] )
   REFERENCES  reftable [ ( refcolumn ) ]}

The following options apply only to external tables:

SET LOCATION { 's3://bucket/folder/' | 's3://bucket/manifest_file' } 
| SET FILE FORMAT format |
| SET TABLE PROPERTIES ('property_name'='property_value') 
| PARTITION ( partition_column=partition_value [, ...] ) 
  SET LOCATION { 's3://bucket/folder' |'s3://bucket/manifest_file' } 
| ADD [IF NOT EXISTS] 
    PARTITION ( partition_column=partition_value [, ...] ) LOCATION { 's3://bucket/folder' |'s3://bucket/manifest_file' }
    [, ... ]
| DROP PARTITION ( partition_column=partition_value [, ...] )  

Um die Zeit für die Ausführung des Befehls ALTER TABLE zu verkürzen, können Sie einige Klauseln des Befehls ALTER TABLE kombinieren.

Amazon Redshift unterstützt die folgenden Kombinationen der ALTER TABLE-Klauseln:

ALTER TABLE tablename ALTER SORTKEY (column_list), ALTER DISTKEY column_Id; ALTER TABLE tablename ALTER DISTKEY column_Id, ALTER SORTKEY (column_list); ALTER TABLE tablename ALTER SORTKEY (column_list), ALTER DISTSTYLE ALL; ALTER TABLE tablename ALTER DISTSTYLE ALL, ALTER SORTKEY (column_list);

Parameter

table_name

Der Name der Tabelle, die geändert werden soll. Geben Sie einfach den Namen der Tabelle an oder verwenden Sie das Format schema_name.table_name, um ein spezifisches Schema zu verwenden. Externe Tabellen müssen durch einen externen Schemanamen qualifiziert werden. Sie können auch einen Anzeigenamen angeben, wenn Sie die Anweisung ALTER TABLE verwenden, um eine Ansicht umzubenennen oder den Besitzer zu ändern. 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 einer Länge von vier Bytes verwenden. Weitere Informationen zu gültigen Namen finden Sie unter Namen und Kennungen.

ADD table_constraint

Eine Klausel, die der Tabelle die angegebene Einschränkung hinzufügt. Beschreibungen der gültigen Werte für table_constraint finden Sie unter CREATE TABLE.

Anmerkung

Sie können einer löschbaren Spalte keine Einschränkung „primary-key“ hinzufügen. Wenn die Spalte ursprünglich mit der Einschränkung NOT NULL erstellt wurde, können Sie die Einschränkung „primary-key“ hinzufügen.

DROP CONSTRAINT constraint_name

Eine Klausel, die die angegebene Einschränkung aus der Tabelle entfernt. Um eine Einschränkung zu entfernen, geben Sie den Namen der Einschränkung an, nicht den Typ der Einschränkung. Um Namen von Tabelleneinschränkungen anzuzeigen, führen Sie die folgende Abfrage aus.

select constraint_name, constraint_type from information_schema.table_constraints;
RESTRICT

Eine Klausel, die nur die angegebene Einschränkung entfernt. RESTRICT ist eine Option für DROP CONSTRAINT. RESTRICT kann nicht mit CASCADE verwendet werden.

CASCADE

Eine Klausel, die die angegebene Einschränkung und alles, was von dieser Einschränkung abhängig ist, entfernt. CASCADE ist eine Option für DROP CONSTRAINT. CASCADE kann nicht mit RESTRICT verwendet werden.

OWNER TO new_owner

Eine Klausel, die den Besitzer der Tabelle (oder Ansicht) in den Wert new_owner ändert.

RENAME TO new_name

Eine Klausel, die die Tabelle (oder Ansicht) in den Wert ändert, der in new_name angegeben ist. Die maximale Länge des Tabellennamens beträgt 127 Bytes; längere Namen werden bei 127 Bytes abgeschnitten.

Sie können den Namen einer permanenten Tabelle nicht in einen Namen umbenennen, der mit „#“ beginnt. Ein Tabellenname, der mit „#“ beginnt, zeigt eine temporäre Tabelle an.

Sie können eine externe Tabelle nicht umbenennen.

ALTER COLUMN Spaltenname TYPE neuer_Datentyp

Eine Klausel, die die Größe einer Spalte ändert, die als VARCHAR-Datentyp definiert ist. Erwägen Sie die folgenden Einschränkungen:

  • Spalten mit den Komprimierungskodierungen BYTEDICT, RUNLENGTH, TEXT255 oder TEXT32K können nicht geändert werden.

  • Sie können die Größe nicht auf weniger als die maximale Größe vorhandener Daten reduzieren.

  • Spalten mit Standardwerten können nicht geändert werden.

  • Spalten mit UNIQUE, PRIMARY KEY oder FOREIGN KEY können nicht geändert werden.

  • Spalten innerhalb eines Transaktionsblocks (BEGIN ... END). Weitere Informationen Transaktionen finden Sie unter Serialisierbare Isolierung.

ALTER COLUMN column_name ENCODE new_encode_type

Eine Klausel, die die Komprimierungskodierung einer Spalte ändert. Wenn Sie die Komprimierungskodierung für eine Spalte angeben, wird die Tabelle nicht mehr auf ENCODE AUTO festgelegt. Weitere Informationen zur Komprimierungskodierung finden Sie unter Arbeiten mit Spaltenkomprimierung.

Wenn Sie die Komprimierungskodierung für eine Spalte ändern, bleibt die Tabelle zur Abfrage verfügbar.

Erwägen Sie die folgenden Einschränkungen:

  • Sie können eine Spalte nicht in dieselbe Kodierung ändern, die derzeit für die Spalte definiert ist.

  • Sie können die Kodierung für eine Spalte in einer Tabelle mit einem überlappenden Sortierschlüssel nicht ändern.

ALTER COLUMN column_name ENCODE encode_type, ALTER COLUMN column_name ENCODE encode_type, .....;

Eine Klausel, die die Komprimierungskodierung mehrerer Spalten in einem einzigen Befehl ändert. Weitere Informationen zur Komprimierungskodierung finden Sie unter Arbeiten mit Spaltenkomprimierung.

Wenn Sie die Komprimierungskodierung für eine Spalte ändern, bleibt die Tabelle zur Abfrage verfügbar.

Erwägen Sie die folgenden Einschränkungen:

  • Sie können eine Spalte nicht mehrmals mit einem einzigen Befehl in denselben oder einen anderen Kodierungstyp ändern.

  • Sie können eine Spalte nicht in dieselbe Kodierung ändern, die derzeit für die Spalte definiert ist.

  • Sie können die Kodierung für eine Spalte in einer Tabelle mit einem überlappenden Sortierschlüssel nicht ändern.

ALTER DISTSTYLE ALL

Eine Klausel, die den vorhandenen Verteilungsstil einer Tabelle in ändert ALL. Berücksichtigen Sie dabei Folgendes:

  • ALTER DISTSYTLE, ALTER SORTKEY und VACUUM können nicht gleichzeitig für dieselbe Tabelle ausgeführt werden.

    • Wenn VACUUM gerade ausgeführt wird, wird beim Ausführen von ALTER DISTSTYLE ALL ein Fehler zurückgegeben.

    • Wenn ALTER DISTSTYLE ALL ausgeführt wird, startet eine Hintergrundbereinigung nicht für eine Tabelle.

  • Der Befehl ALTER DISTSTYLE ALL wird für Tabellen mit verschachtelten Sortierschlüsseln und temporäre Tabellen nicht unterstützt.

  • Wenn der Verteilungsstil zuvor als AUTO definiert war, dann ist die Tabelle kein Kandidat mehr für die automatische Tabellenoptimierung.

Weitere Informationen zu DISTSTYLE ALL finden Sie unter CREATE TABLE.

ALTER DISTSTYLE EVEN

Eine Klausel, die den vorhandenen Verteilungsstil einer Tabelle in ändert EVEN. Berücksichtigen Sie dabei Folgendes:

  • ALTER DISTSYTLE, ALTER SORTKEY und VACUUM können nicht gleichzeitig für dieselbe Tabelle ausgeführt werden.

    • Wenn VACUUM gerade ausgeführt wird, wird beim Ausführen von ALTER DISTSTYLE EVEN ein Fehler zurückgegeben.

    • Wenn ALTER DISTSTYLE EVEN ausgeführt wird, startet eine Hintergrundbereinigung nicht für eine Tabelle.

  • Der Befehl ALTER DISTSTYLE EVEN wird für Tabellen mit verschachtelten Sortierschlüsseln und temporäre Tabellen nicht unterstützt.

  • Wenn der Verteilungsstil zuvor als AUTO definiert war, dann ist die Tabelle kein Kandidat mehr für die automatische Tabellenoptimierung.

Weitere Informationen zu DISTSTYLE EVEN finden Sie unter CREATE TABLE.

ALTER DISTKEY column_name oder ALTER DISTSTYLE KEY DISTKEY column_name

Eine Klausel, die die Spalte ändert, die als Verteilungsschlüssel einer Tabelle verwendet wird. Berücksichtigen Sie dabei Folgendes:

  • VACUUM und ALTER DISTKEY können nicht gleichzeitig für dieselbe Tabelle ausgeführt werden.

    • Wenn VACUUM bereits ausgeführt wird, gibt ALTER DISTKEY einen Fehler zurück.

    • Wenn ALTER DISTKEY ausgeführt wird, startet die Hintergrundbereinigung nicht für die Tabelle.

    • Wenn ALTER DISTKEY ausgeführt wird, dann gibt die Vordergrundbereinigung einen Fehler zurück.

  • Sie können nur jeweils einen ALTER DISTKEY-Befehl für eine Tabelle ausführen.

  • Der Befehl ALTER DISTKEY wird für Tabellen mit verschachtelten Sortierschlüsseln nicht unterstützt.

  • Wenn der Verteilungsstil zuvor als AUTO definiert war, dann ist die Tabelle kein Kandidat mehr für die automatische Tabellenoptimierung.

Wenn Sie DISTSTYLE KEY angeben, werden die Daten nach den Werten in der DISTKEY-Spalte verteilt. Weitere Informationen zu DISTSTYLE finden Sie unter CREATE TABLE.

ALTER DISTSTYLE AUTO

Eine Klausel, die den vorhandenen Verteilungsstil einer Tabelle in AUTO ändert.

Wenn Sie einen Verteilungsstil auf AUTO ändern, wird der Verteilungsstil der Tabelle folgendermaßen festgelegt:

  • Eine kleine Tabelle mit DISTSTYLE ALL wird in AUTO(ALL) umgewandelt.

  • Eine kleine Tabelle mit DISTSTYLE EVEN wird in AUTO(ALL) umgewandelt.

  • Eine kleine Tabelle mit DISTSTYLE KEY wird in AUTO(ALL) umgewandelt.

  • Eine große Tabelle mit DISTSTYLE ALL wird in AUTO(EVEN) umgewandelt.

  • Eine große Tabelle mit DISTSTYLE EVEN wird in AUTO(EVEN) umgewandelt.

  • Eine große Tabelle mit DISTSTYLE KEY wird in AUTO(KEY) umgewandelt und der DISTKEY bleibt erhalten.

Wenn Amazon Redshift feststellt, dass ein neuer Verteilungsstil oder Schlüssel die Leistung von Abfragen verbessert, dann kann Amazon Redshift den Verteilungsstil oder Schlüssel Ihrer Tabelle in Zukunft ändern.

Weitere Informationen zu DISTSTYLE AUTO finden Sie unter CREATE TABLE.

Um den Verteilungsstil einer Tabelle anzuzeigen, fragen Sie die Systemkatalogansicht SVV_TABLE_INFO ab. Weitere Informationen finden Sie unter SVV_TABLE_INFO. Um die Empfehlungen von Amazon Redshift Advisor für Tabellen anzuzeigen, fragen Sie die Systemkatalogansicht SVV_ALTER_TABLE_RECOMMENDATIONS ab. Weitere Informationen finden Sie unter SVV_ALTER_TABLE_RECOMMENDATIONS. Um die von Amazon Redshift durchgeführten Aktionen anzuzeigen, fragen Sie die Systemkatalogansicht SVL_AUTO_WORKER_ACTION ab. Weitere Informationen finden Sie unter SVL_AUTO_WORKER_ACTION.

ALTER [COMPOUND] SORTKEY ( column_name [,...] )

Eine Klausel, die den für eine Tabelle verwendeten Sortierschlüssel ändert oder hinzufügt.

Wenn Sie einen Sortierschlüssel ändern, kann sich die Kompressionskodierung von Spalten im neuen oder ursprünglichen Sortierschlüssel ändern. Wenn für die Tabelle keine Kodierung explizit definiert ist, weist Amazon Redshift automatisch Komprimierungskodierungen wie folgt zu:

  • Spalten, die als Sortierschlüssel definiert sind, wird die RAW-Kompression zugewiesen.

  • Spalten, die als die Datentypen BOOLEAN, REAL oder DOUBLE PRECISION definiert sind, wird die RAW-Kodierung zugewiesen.

  • Spalten, die als SMALLINT, INTEGER, BIGINT, DECIMAL, DATE, TIME, TIMETZ, TIMESTAMP oder TIMESTAMPTZ definiert sind, wird die AZ64-Komprimierung zugewiesen.

  • Spalten, die als CHAR oder VARCHAR definiert sind, wird LZO-Komprimierung zugewiesen.

Berücksichtigen Sie dabei Folgendes:

  • Sie können maximal 400 Spalten für einen Sortierschlüssel pro Tabelle definieren.

  • Sie können einen überlappenden Sortierschlüssel in einen zusammengesetzten Sortierschlüssel oder in keinen Sortierschlüssel ändern. Es ist jedoch nicht möglich, einen zusammengesetzten Sortierschlüssel in einen überlappenden Sortierschlüssel zu ändern.

  • Wenn der Sortierschlüssel zuvor als AUTO definiert war, dann ist die Tabelle kein Kandidat mehr für die automatische Tabellenoptimierung.

  • Amazon Redshift empfiehlt die Verwendung von RAW-Kodierung (keine Komprimierung) für Spalten, die als Sortierschlüssel definiert sind. Wenn Sie eine Spalte ändern, um sie als Sortierschlüssel zu wählen, wird die Komprimierung der Spalte auf RAW-Komprimierung (keine Komprimierung) geändert. Dadurch kann sich der Speicherbedarf der Tabelle erhöhen. Wie stark die Tabellengröße zunimmt, hängt von der jeweiligen Tabellendefinition und dem Tabelleninhalt ab. Weitere Informationen zur Komprimierung finden Sie unter . Kompressionskodierungen

Beim Laden von Daten in eine Tabelle werden die Daten in der Reihenfolge des Sortierschlüssels geladen. Wenn Sie den Sortierschlüssel ändern, ordnet Amazon Redshift die Daten neu an. Weitere Informationen zu SORTKEY finden Sie im Abschnitt CREATE TABLE.

ALTER SORTKEY AUTO

Eine Klausel, die den Sortierschlüssel der Zieltabelle auf AUTO ändert oder hinzufügt.

Wenn Sie einen Sortierschlüssel auf AUTO ändern, behält Amazon Redshift den bestehenden Sortierschlüssel der Tabelle bei.

Wenn Amazon Redshift feststellt, dass ein neuer Sortierschlüssel die Leistung von Abfragen verbessert, dann kann Amazon Redshift den Sortierschlüssel Ihrer Tabelle in Zukunft ändern.

Weitere Informationen zu SORTKEY AUTO finden Sie im Abschnitt CREATE TABLE.

Um den Sortierschlüssel einer Tabelle anzuzeigen, fragen Sie die Systemkatalogansicht SVV_TABLE_INFO ab. Weitere Informationen finden Sie unter SVV_TABLE_INFO. Um die Empfehlungen von Amazon Redshift Advisor für Tabellen anzuzeigen, fragen Sie die Systemkatalogansicht SVV_ALTER_TABLE_RECOMMENDATIONS ab. Weitere Informationen finden Sie unter SVV_ALTER_TABLE_RECOMMENDATIONS. Um die von Amazon Redshift durchgeführten Aktionen anzuzeigen, fragen Sie die Systemkatalogansicht SVL_AUTO_WORKER_ACTION ab. Weitere Informationen finden Sie unter SVL_AUTO_WORKER_ACTION.

ALTER SORTKEY NONE

Eine Klausel, die den Sortierschlüssel der Zieltabelle entfernt.

Wenn der Sortierschlüssel zuvor als AUTO definiert war, dann ist die Tabelle kein Kandidat mehr für die automatische Tabellenoptimierung.

ALTER ENCODE AUTO

Eine Klausel, die den Kodierungstyp der Spalten in der Zieltabelle auf AUTO ändert. Wenn Sie die Kodierung auf AUTO ändern, behält Amazon Redshift den bestehenden Kodierungstyp der Spalten in der Tabelle bei. Wenn Amazon Redshift dann feststellt, dass ein neuer Kodierungstyp die Abfrageleistung verbessern kann, kann Amazon Redshift den Kodierungstyp der Tabellenspalten ändern.

Wenn Sie eine oder mehrere Spalten ändern, um eine Kodierung anzugeben, passt Amazon Redshift die Kodierung nicht mehr automatisch für alle Spalten in der Tabelle an. Die Spalten behalten die aktuellen Kodierungseinstellungen bei.

Die folgenden Aktionen haben keinen Einfluss auf die Einstellung ENCODE AUTO für die Tabelle:

  • Umbenennen der Tabelle.

  • Ändern der DISTSTYLE- oder SORTKEY-Einstellung für die Tabelle.

  • Hinzufügen oder Löschen einer Spalte mit einer ENCODE-Einstellung.

  • Verwendung der Option COMPUPDATE des Befehls COPY. Weitere Informationen finden Sie unter Datenladeoperationen.

Um die Kodierung einer Tabelle anzuzeigen, fragen Sie die Systemkatalogansicht SVV_TABLE_INFO ab. Weitere Informationen finden Sie unter SVV_TABLE_INFO.

RENAME COLUMN column_name TO new_name

Eine Klausel, die eine Spalte in den Wert ändert, der in new_name angegeben ist. Die maximale Länge des Spaltennamens beträgt 127 Bytes; längere Namen werden bei 127 Bytes abgeschnitten. Weitere Informationen zu gültigen Namen finden Sie unter Namen und Kennungen.

ADD [ COLUMN ] column_name

Eine Klausel, die der Tabelle eine Spalte mit dem angegebenen Namen hinzufügt. Sie können in jeder Anweisung ALTER TABLE nur eine Spalte hinzufügen.

Sie können keine Spalte hinzufügen, die der Verteilungsschlüssel (DISTKEY) oder ein Sortierschlüssel (SORTKEY) der Tabelle ist.

Sie können den Befehl ALTER TABLE ADD COLUMN nicht verwenden, um die folgenden Tabellen- und Spaltenattribute zu ändern:

  • UNIQUE

  • PRIMARY KEY

  • REFERENCES (Fremdschlüssel)

  • IDENTITY oder GENERATED BY DEFAULT AS IDNENTITY

Die maximale Länge des Spaltennamens beträgt 127 Bytes; längere Namen werden bei 127 Bytes abgeschnitten. Die maximale Anzahl der Spalten, die Sie in einer einzelnen Tabelle definieren können, ist 1.600.

Beim Hinzufügen von Spalten zu einer externen Tabelle gelten die folgenden Beschränkungen:

  • Sie können keine Spalten zu einer externen Tabelle mit den Spaltenbeschränkungen DEFAULT, ENCODE; NOT NULL oder NULL hinzufügen.

  • Sie können keine Spalten zu einer externen Tabelle hinzufügen, die mit dem AVRO-Dateiformat definiert ist.

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

Weitere Informationen finden Sie unter CREATE EXTERNAL TABLE.

column_type

Der Datentyp der Spalte, die hinzugefügt wird. Im Fall der Spalten CHAR und VARCHAR können Sie das Schlüsselwort MAX verwenden, statt eine maximale Länge zu deklarieren. MAX legt die maximale Länge auf 4.096 Bytes für CHAR oder 65.535 Bytes für VARCHAR fest. Die maximale Größe eines GEOMETRY-Objekts beträgt 1.048.447 Byte..

Informationen zu den Datentypen, die Amazon Redshift unterstützt, finden Sie unter Datentypen.

DEFAULT default_expr

Eine Klausel, die der Spalte einen Standarddatenwert zuweist. Der Datentyp von default_expr muss dem Datentyp der Spalte entsprechen. Der Wert DEFAULT muss ein variablenloser Ausdruck sein. Unterabfragen, Querreferenzen auf andere Spalten in der aktuellen Tabelle und benutzerdefinierte Funktionen sind nicht zulässig.

Der default_expr wird in jeder INSERT-Operation verwendet, die keinen Wert für die Spalte angibt. Wenn kein Standardwert angegeben ist, ist der Standardwert für die Spalte null.

Wenn eine COPY-Operation auf ein Null-Feld in einer Spalte mit dem Wert DEFAULT und der Einschränkung NOT NULL trifft, fügt der Befehl COPY den Wert von default_expr ein.

DEFAULT wird für externe Tabellen nicht unterstützt.

ENCODE encoding

Die Kompressionskodierung für eine Spalte. Standardmäßig verwaltet Amazon Redshift die Komprimierungskodierung für alle Spalten in einer Tabelle automatisch, wenn Sie keine Komprimierungskodierung für eine Spalte in der Tabelle angeben oder wenn Sie die Option ENCODE AUTO für die Tabelle verwenden.

Wenn Sie die Komprimierungskodierung für eine beliebige Spalte in der Tabelle angeben oder nicht die Option ENCODE AUTO für die Tabelle angeben, weist Amazon Redshift den Spalten, für die Sie keine Komprimierungskodierung angeben, automatisch die Komprimierungskodierung wie folgt zu:

  • Allen Spalten in temporären Tabellen wird standardmäßig die RAW-Kompression zugewiesen.

  • Spalten, die als Sortierschlüssel definiert sind, wird die RAW-Kompression zugewiesen.

  • Spalten, die als Datentyp BOOLEAN, REAL, DOUBLE PRECISION, GEOMETRY oder GEOGRAPHY definiert sind, wird die RAW-Kompression zugewiesen.

  • Spalten, die als SMALLINT, INTEGER, BIGINT, DECIMAL, DATE, TIME, TIMETZ, TIMESTAMP oder TIMESTAMPTZ definiert sind, wird die AZ64-Komprimierung zugewiesen.

  • Spalten, die als CHAR, VARCHAR oder VARBYTE definiert sind, wird LZO-Komprimierung zugewiesen.

Anmerkung

Wenn Sie nicht möchten, dass eine Spalte komprimiert wird, geben Sie die RAW-Kodierung explizit an.

Die folgenden compression encodings werden unterstützt:

  • AZ64

  • BYTEDICT

  • DELTA

  • DELTA32K

  • LZO

  • MOSTLY8

  • MOSTLY16

  • MOSTLY32

  • RAW (keine Kompression)

  • RUNLENGTH

  • TEXT255

  • TEXT32K

  • ZSTD

ENCODE wird für externe Tabellen nicht unterstützt.

NOT NULL | NULL

NOT NULL gibt an, dass die Spalte keine Null-Werte enthalten darf. Der Standardwert NULL gibt an, dass die Spalte Null-Werte akzeptiert.

NOT NULL und NULL werden für externe Tabellen nicht unterstützt.

DROP [ COLUMN ] column_name

Der Name der Spalte, die aus der Tabelle gelöscht werden soll.

Die letzte Tabellenspalte kann nicht gelöscht werden. Eine Tabelle muss mindestens eine Spalte enthalten.

Sie können keine Spalte entfernen, die der Verteilungsschlüssel (DISTKEY) oder ein Sortierschlüssel (SORTKEY) der Tabelle ist. Das Standardverhalten für DROP COLUMN ist RESTRICT, wenn die Spalte abhängige Objekte enthält, wie eine Ansicht, einen Primärschlüssel, einen Fremdschlüssel oder die Einschränkung UNIQUE.

Beim Hineinziehen aus einer externen Tabelle gelten die folgenden Beschränkungen:

  • Spalten, die als Partition verwendet werden, können nicht aus einer externen Tabelle entfernt werden.

  • Sie können keine Spalten aus einer externen Tabelle entfernen, die mit dem AVRO-Dateiformat definiert ist.

  • RESTRICT und CASCADE werden für externe Tabellen ignoriert.

Weitere Informationen finden Sie unter CREATE EXTERNAL TABLE.

RESTRICT

Wenn RESTRICT mit DROP COLUMN verwendet wird, bedeutet das, dass die Spalte, die entfernt werden soll, in den folgenden Fällen nicht entfernt wird:

  • Wenn eine definierte Ansicht die Spalte referenziert, die entfernt werden soll

  • Wenn ein Fremdschlüssel die Spalte referenziert

  • Wenn die Spalte Teil eines mehrteiligen Schlüssels ist

RESTRICT kann nicht mit CASCADE verwendet werden.

RESTRICT und CASCADE werden für externe Tabellen ignoriert.

CASCADE

Bei Verwendung mit DROP COLUMN wird die angegebene Spalte und alles, was von dieser Spalte abhängig ist, entfernt. CASCADE kann nicht mit RESTRICT verwendet werden.

RESTRICT und CASCADE werden für externe Tabellen ignoriert.

Die folgenden Optionen gelten nur für externe Tabellen.

SET LOCATION { 's3://bucket/folder/' | 's3://bucket/manifest_file' }

Der Pfad zum 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-Cluster befinden. Eine Liste der unterstützten AWS-Regionen finden Sie unter Überlegungen zu Amazon Redshift Spectrum. Weitere Informationen zur Verwendung einer Manifestdatei finden Sie unter LOCATION in der CREATE EXTERNAL TABLE-Referenz Parameter.

SET FILE FORMAT format

Das Dateiformat für externe Datendateien.

Gültige Formate sind folgende:

  • AVRO

  • PARQUET

  • RCFILE

  • SEQUENCEFILE

  • TEXTFILE

SET TABLE PROPERTIES ( 'property_name'='property_value')

Eine Klausel, die die Tabellendefinition für Tabelleneigenschaften für eine externe Tabelle festlegt.

Anmerkung

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

'numRows'='row_count'

Eine Eigenschaft, die den Wert numRows für die Tabellendefinition festlegt. Um die Statistiken einer externen Tabelle explizit zu aktualisieren, legen Sie mit der Eigenschaft numRows die Größe der Tabelle fest. 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. Dieser Plan basiert 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.

PARTITION ( partition_column=partition_value [, ...] SET LOCATION { 's3://bucket/folder' | 's3://bucket/manifest_file' }

Eine Klausel, die einen neuen Speicherort für eine oder mehrere Partitionsspalten festlegt.

ADD [ IF NOT EXISTS ] PARTITION ( partition_column=partition_value [, ...] ) LOCATION { 's3://bucket/folder' | 's3://bucket/manifest_file' } [, ... ]

Eine Klausel, die eine oder mehrere Partitionen hinzufügt. Sie können mehrere PARTITION-Klauseln mit einer einzelnen ALTER TABLE … ADD-Anweisung angeben.

Anmerkung

Wenn Sie den AWS Glue-Katalog verwenden, können Sie mit einer einzigen ALTER TABLE-Anweisung bis zu 100 Partitionen hinzufügen.

Die IF NOT EXISTS-Klausel gibt an, dass der Befehl keine Änderungen ausführen soll, wenn die angegebene Partition bereits vorhanden ist. Darüber hinaus gibt sie an, dass der Befehl eine Meldung zurückgeben sollte, dass die Partition vorhanden ist, anstatt mit einem Fehler beendet zu werden. Diese Klausel ist beim Scripting nützlich, damit das Skript nicht fehlschlägt, wenn ALTER TABLE versucht, eine Partition hinzuzufügen, die bereits vorhanden ist.

DROP PARTITION (partition_column=partition_value [, ...] )

Eine Klausel, die die angegebene Partition entfernt. Durch die Entfernung einer Partition werden nur die Metadaten der externen Tabelle geändert. Die Daten auf Amazon S3 sind nicht betroffen.