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.
ALTER TABLE
Dieser Befehl ändert die Definition einer Amazon-Redshift-Tabelle oder einer externen Amazon-Redshift-Spectrum-Tabelle. Dieser Befehl aktualisiert die von CREATE TABLE oder CREATE EXTERNAL TABLE festgelegten Werte und Eigenschaften.
Sie können nicht ALTER TABLE auf einer externen Tabelle innerhalb eines Transaktionsblocks arbeiten (... BEGIN END). Weitere Informationen zu Transaktionen finden Sie unter Serialisierbare Isolierung.
ALTERTABLEsperrt die Tabelle für Lese- und Schreibvorgänge, bis die Transaktion, die den ALTER TABLE Vorgang umschließt, abgeschlossen ist, sofern in der Dokumentation nicht ausdrücklich angegeben ist, dass Sie Daten abfragen oder andere Operationen an der Tabelle ausführen können, während sie geändert wird.
Erforderliche Berechtigungen
Der Benutzer, der eine Tabelle ändert, benötigt die entsprechenden Berechtigungen, damit der Befehl erfolgreich ausgeführt werden kann. Je nach ALTER TABLE Befehl ist eines der folgenden Rechte erforderlich.
Superuser
Benutzer mit der ALTER TABLE Berechtigung
Tabellenbesitzer mit der USAGE Berechtigung für das Schema
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 updated_varchar_data_type_size | 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 ] [ COLLATE { CASE_SENSITIVE | CASE_INSENSITIVE } ] | | DROP [ COLUMN ] column_name [ RESTRICT | CASCADE ] | ROW LEVEL SECURITY { ON | OFF } [ CONJUNCTION TYPE { AND | OR } ] [ FOR DATASHARES ]} 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 ALTER TABLE Befehls zu verkürzen, können Sie einige Klauseln des ALTER TABLE Befehls kombinieren.
Amazon Redshift unterstützt die folgenden Klauselkombinationen: ALTER TABLE
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 Namen für die Ansicht angeben, wenn Sie die ALTER TABLE Anweisung verwenden, um eine Ansicht umzubenennen oder ihren 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 einem Maximum von vier Byte verwenden. Weitere Informationen zu gültigen Namen finden Sie unter Namen und Kennungen.
- ADDtable_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 NOT NULL Einschränkung erstellt wurde, können Sie die Primärschlüsseleinschränkung hinzufügen.
- DROPCONSTRAINTconstraint_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. RESTRICTist eine Option für. DROP CONSTRAINT RESTRICTkann nicht mit verwendet werdenCASCADE.
- CASCADE
-
Eine Klausel, die die angegebene Einschränkung und alles, was von dieser Einschränkung abhängig ist, entfernt. CASCADEist eine Option für DROPCONSTRAINT. CASCADEkann nicht mit verwendet werdenRESTRICT.
- OWNERAN new_owner
-
Eine Klausel, die den Besitzer der Tabelle (oder Ansicht) in den Wert new_owner ändert.
- RENAMEZU 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.
- ALTERCOLUMNcolumn_name updated_varchar_data_type_size TYPE
-
Eine Klausel, die die Größe einer als Datentyp definierten Spalte ändert. VARCHAR Diese Klausel unterstützt nur das Ändern der Größe eines VARCHAR Datentyps. Erwägen Sie die folgenden Einschränkungen:
-
Sie können eine Spalte mit den KompressionskodierungenBYTEDICT, RUNLENGTHTEXT255, oder nicht ändern. TEXT32K
-
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.
-
Sie können Spalten nicht mit UNIQUE PRIMARYKEY, oder FOREIGN KEY ändern.
-
Sie können Spalten innerhalb eines Transaktionsblocks nicht ändern (BEGIN... END). Weitere Informationen zu Transaktionen finden Sie unter Serialisierbare Isolierung.
-
- ALTERCOLUMNSpaltenname neuer_Kodierungstyp ENCODE
-
Eine Klausel, die die Komprimierungskodierung einer Spalte ändert. Wenn Sie die Komprimierungskodierung für eine Spalte angeben, ist die Tabelle nicht mehr auf eingestellt. ENCODE AUTO Weitere Informationen zur Komprimierungskodierung finden Sie unter Spaltenkomprimierung zur Reduzierung der Größe der gespeicherten Daten.
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.
-
- ALTERCOLUMNcolumn_name ENCODE encode_type, column_name encode_type , ALTER COLUMN ENCODE ... ;
-
Eine Klausel, die die Komprimierungskodierung mehrerer Spalten in einem einzigen Befehl ändert. Weitere Informationen zur Komprimierungskodierung finden Sie unter Spaltenkomprimierung zur Reduzierung der Größe der gespeicherten Daten.
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:-
Ein ALTER DISTSTYLE ALTERSORTKEY, und VACUUM kann nicht gleichzeitig auf derselben Tabelle ausgeführt werden.
-
Wenn gerade ausgeführt VACUUM wird, gibt die Ausführung einen Fehler ALTER DISTSTYLE ALL zurück.
-
Wenn ausgeführt ALTER DISTSTYLE ALL wird, wird auf einer Tabelle kein Hintergrundvakuum gestartet.
-
-
Der ALTER DISTSTYLE ALL Befehl wird für Tabellen mit verschachtelten Sortierschlüsseln und temporären Tabellen nicht unterstützt.
Wenn der Verteilungsstil zuvor als definiert wurdeAUTO, ist die Tabelle kein Kandidat mehr für die automatische Tabellenoptimierung.
Weitere Hinweise zu finden DISTSTYLE ALL Sie unterCREATE TABLE.
-
- ALTER DISTSTYLE EVEN
-
Eine Klausel, die den vorhandenen Verteilungsstil einer Tabelle in ändert
EVEN
. Berücksichtigen Sie dabei Folgendes:-
Ein ALTER DISTSYTLE ALTERSORTKEY, und VACUUM kann nicht gleichzeitig in derselben Tabelle ausgeführt werden.
-
Wenn gerade ausgeführt VACUUM wird, gibt die Ausführung einen Fehler ALTER DISTSTYLE EVEN zurück.
-
Wenn ausgeführt ALTER DISTSTYLE EVEN wird, wird auf einer Tabelle kein Hintergrundvakuum gestartet.
-
Der ALTER DISTSTYLE EVEN Befehl wird für Tabellen mit verschachtelten Sortierschlüsseln und temporären Tabellen nicht unterstützt.
Wenn der Verteilungsstil zuvor als definiert wurdeAUTO, ist die Tabelle kein Kandidat mehr für die automatische Tabellenoptimierung.
Weitere Hinweise zu finden DISTSTYLE EVEN Sie unterCREATE TABLE.
-
- ALTERDISTKEYcolumn_name oder column_name ALTER DISTSTYLE KEY DISTKEY
-
Eine Klausel, die die Spalte ändert, die als Verteilungsschlüssel einer Tabelle verwendet wird. Berücksichtigen Sie dabei Folgendes:
-
VACUUMund ALTER DISTKEY kann nicht gleichzeitig auf derselben Tabelle ausgeführt werden.
-
Wenn VACUUM es bereits läuft, wird ein Fehler ALTER DISTKEY zurückgegeben.
-
Wenn ausgeführt ALTER DISTKEY wird, wird die Hintergrundbereinigung auf einer Tabelle nicht gestartet.
-
Wenn ausgeführt ALTER DISTKEY wird, gibt Foreground Vacuum einen Fehler zurück.
-
-
Sie können jeweils nur einen ALTER DISTKEY Befehl für eine Tabelle ausführen.
-
Der ALTER DISTKEY Befehl wird für Tabellen mit verschachtelten Sortierschlüsseln nicht unterstützt.
Wenn der Verteilungsstil zuvor als definiert wurdeAUTO, ist die Tabelle kein Kandidat mehr für die automatische Tabellenoptimierung.
Bei der Angabe DISTSTYLE KEY werden die Daten nach den Werten in der DISTKEY Spalte verteilt. Weitere Hinweise zu finden DISTSTYLE Sie unterCREATE TABLE.
-
- ALTER DISTSTYLE AUTO
-
Eine Klausel, die den bestehenden Verteilungsstil einer Tabelle in ändertAUTO.
Wenn Sie einen Verteilungsstil in ändernAUTO, wird der Verteilungsstil der Tabelle wie folgt festgelegt:
Eine kleine Tabelle mit DISTSTYLE ALL wird in AUTO (ALL) konvertiert.
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) konvertiert.
Eine große Tabelle mit DISTSTYLE EVEN wird in AUTO (EVEN) konvertiert.
Eine große Tabelle mit DISTSTYLE KEY wird in AUTO (KEY) konvertiert und die DISTKEY bleibt erhalten. In diesem Fall nimmt Amazon Redshift keine Änderungen an der Tabelle vor.
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. Amazon Redshift könnte beispielsweise eine Tabelle mit einem DISTSTYLE of AUTO (KEY) in AUTO (EVEN) konvertieren oder umgekehrt. Weitere Informationen zum Verhalten bei Änderungen von Verteilungsschlüsseln, einschließlich Datenumverteilung und Sperren, finden Sie unter Empfehlungen für Amazon Redshift Advisor.
Weitere Informationen zu finden Sie DISTSTYLE AUTO unterCREATE TABLE.
Um den Verteilungsstil einer Tabelle anzuzeigen, fragen Sie die INFO Systemkatalogansicht SVV TABLE _ _ ab. Weitere Informationen finden Sie unter SVV_TABLE_INFO. Um die Amazon Redshift Advisor-Empfehlungen für Tabellen anzuzeigen, fragen Sie die RECOMMENDATIONS Systemkatalogansicht SVV ALTER TABLE _ _ ab. Weitere Informationen finden Sie unter SVV_ALTER_TABLE_RECOMMENDATIONS. Um die von Amazon Redshift durchgeführten Aktionen zu sehen, fragen Sie die SVL _ _ AUTO WORKER _ ACTION Systemkatalogansicht ab. Weitere Informationen finden Sie unter SVL_AUTO_WORKER_ACTION.
- ALTER[COMPOUND] SORTKEY (Spaltenname [,...])
-
Eine Klausel, die den für eine Tabelle verwendeten Sortierschlüssel ändert oder hinzufügt. ALTERSORTKEYwird für temporäre Tabellen nicht unterstützt.
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 RAW Komprimierung zugewiesen.
-
Spalten, die als BOOLEANREAL, oder DOUBLE PRECISION Datentypen definiert sind, wird RAW Komprimierung zugewiesen.
-
Spalten, die alsSMALLINT,,INTEGER, BIGINTDECIMAL, DATE TIME TIMETZTIMESTAMP, definiert TIMESTAMPTZ sind oder denen AZ64 Komprimierung zugewiesen wurde.
-
Spalten, die als Komprimierung definiert VARCHAR sind CHAR oder denen LZO Komprimierung zugewiesen wurde.
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 definiert wurdeAUTO, ist die Tabelle kein Kandidat mehr für die automatische Tabellenoptimierung.
-
Amazon Redshift empfiehlt die Verwendung von RAW Kodierung (ohne Komprimierung) für Spalten, die als Sortierschlüssel definiert sind. Wenn Sie eine Spalte ändern, um sie als Sortierschlüssel auszuwä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 finden SORTKEY Sie unterCREATE TABLE.
-
- ALTER SORTKEY AUTO
-
Eine Klausel, die den Sortierschlüssel der Zieltabelle ändert oder hinzufügtAUTO. ALTERSORTKEYAUTOwird für temporäre Tabellen nicht unterstützt.
Wenn Sie einen Sortierschlüssel in ändernAUTO, behält Amazon Redshift den vorhandenen 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 finden Sie SORTKEY AUTO unter. CREATE TABLE
Um den Sortierschlüssel einer Tabelle anzuzeigen, fragen Sie die SVV _ TABLE _ INFO Systemkatalogansicht ab. Weitere Informationen finden Sie unter SVV_TABLE_INFO. Um die Amazon Redshift Advisor-Empfehlungen für Tabellen anzuzeigen, fragen Sie die RECOMMENDATIONS Systemkatalogansicht SVV ALTER TABLE _ _ ab. Weitere Informationen finden Sie unter SVV_ALTER_TABLE_RECOMMENDATIONS. Um die von Amazon Redshift durchgeführten Aktionen zu sehen, fragen Sie die SVL _ _ AUTO WORKER _ ACTION Systemkatalogansicht 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 definiert wurdeAUTO, ist die Tabelle kein Kandidat mehr für die automatische Tabellenoptimierung.
- ALTER ENCODE AUTO
-
Eine Klausel, die den Kodierungstyp der Zieltabellenspalten in ändertAUTO. Wenn Sie die Kodierung auf ändernAUTO, behält Amazon Redshift den vorhandenen 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 ENCODE AUTO Einstellung für die Tabelle:
Umbenennen der Tabelle.
Ändern der SORTKEY Einstellung DISTSTYLE oder für die Tabelle.
Hinzufügen oder Löschen einer Spalte mit einer ENCODE Einstellung.
Verwenden Sie die COMPUPDATE Option des COPY Befehls. Weitere Informationen finden Sie unter Datenladeoperationen.
Um die Kodierung einer Tabelle anzuzeigen, fragen Sie die SVV _ TABLE _ INFO Systemkatalogansicht ab. Weitere Informationen finden Sie unter SVV_TABLE_INFO.
- RENAMECOLUMNcolumn_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[] Spaltenname COLUMN
-
Eine Klausel, die der Tabelle eine Spalte mit dem angegebenen Namen hinzufügt. Sie können jeder Anweisung nur eine Spalte hinzufügen. ALTER TABLE
Sie können keine Spalte hinzufügen, bei der es sich um den Verteilungsschlüssel (DISTKEY) oder einen Sortierschlüssel (SORTKEY) der Tabelle handelt.
Sie können keinen ALTER TABLE ADD COLUMN Befehl verwenden, um die folgenden Tabellen- und Spaltenattribute zu ändern:
-
UNIQUE
-
PRIMARY KEY
-
REFERENCES(Fremdschlüssel)
-
IDENTITYoder GENERATED VON DEFAULT AS IDENTITY
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 einer externen Tabelle mit den SpalteneinschränkungenDEFAULT, ENCODE NOTNULL, oder keine Spalte hinzufügenNULL.
-
Sie können einer externen Tabelle, die mithilfe des AVRO Dateiformats definiert wurde, keine Spalten hinzufügen.
-
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. Für CHAR und VARCHAR Spalten können Sie das MAX Schlüsselwort verwenden, anstatt eine maximale Länge anzugeben. MAXlegt die maximale Länge auf 4.096 Byte für CHAR oder 65.535 Byte für fest. VARCHAR Die maximale Größe eines Objekts beträgt 1.048.447 ByteGEOMETRY.
Informationen zu den Datentypen, die Amazon Redshift unterstützt, finden Sie unter Datentypen.
- DEFAULTdefault_expr
-
Eine Klausel, die der Spalte einen Standarddatenwert zuweist. Der Datentyp von default_expr muss dem Datentyp der Spalte entsprechen. Der DEFAULT Wert muss ein variablenfreier 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 bei einer COPY Operation ein Nullfeld in einer Spalte gefunden wird, die einen DEFAULT Wert und eine NOT NULL Einschränkung enthält, fügt der COPY Befehl den Wert von default_expr ein.
DEFAULTwird für externe Tabellen nicht unterstützt.
- ENCODEKodierung
-
Die Kompressionskodierung für eine Spalte. Standardmäßig verwaltet Amazon Redshift automatisch die Komprimierungskodierung für alle Spalten in einer Tabelle, wenn Sie keine Komprimierungskodierung für eine Spalte in der Tabelle angeben oder wenn Sie die ENCODE AUTO Option für die Tabelle angeben.
Wenn Sie die Komprimierungskodierung für eine Spalte in der Tabelle angeben oder wenn Sie die ENCODE AUTO Option für die Tabelle nicht angeben, weist Amazon Redshift Spalten, für die Sie keine Komprimierungskodierung angeben, automatisch wie folgt zu:
-
Allen Spalten in temporären Tabellen wird standardmäßig RAW Komprimierung zugewiesen.
-
Spalten, die als Sortierschlüssel definiert sind, wird RAW Komprimierung zugewiesen.
-
Spalten, die alsBOOLEAN,, REAL DOUBLE PRECISIONGEOMETRY, oder GEOGRAPHY Datentyp definiert sind, wird RAW Komprimierung zugewiesen.
-
Spalten, die alsSMALLINT,,,INTEGER,BIGINT, DECIMAL DATE TIME TIMETZTIMESTAMP, oder definiert TIMESTAMPTZ sind oder denen eine AZ64 Komprimierung zugewiesen wurde.
-
Spalten, die als CHARVARCHAR, definiert VARBYTE sind oder denen LZO Komprimierung zugewiesen wurde.
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 Komprimierung)
-
RUNLENGTH
-
TEXT255
-
TEXT32K
-
ZSTD
ENCODEwird für externe Tabellen nicht unterstützt.
-
- NOT NULL | NULL
-
NOTNULLgibt an, dass die Spalte keine Nullwerte enthalten darf. NULL, die Standardeinstellung, gibt an, dass die Spalte Nullwerte akzeptiert.
NOTNULLund NULL werden für externe Tabellen nicht unterstützt.
- COLLATE { CASE_SENSITIVE | CASE_INSENSITIVE }
-
Eine Klausel, die angibt, ob die Suche oder der Vergleich von Zeichenketten in der Spalte CASE _ SENSITIVE oder CASE _ istINSENSITIVE. Der Standardwert entspricht der aktuellen Konfiguration für die Beachtung der Groß-/Kleinschreibung in der Datenbank.
Verwenden Sie den folgenden Befehl, um die Sortierinformationen der Datenbank zu ermitteln:
SELECT db_collation();
db_collation ---------------- case_sensitive (1 row)
- DROP[COLUMN] Spaltenname
-
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 löschen, bei der es sich um den Verteilungsschlüssel (DISTKEY) oder einen Sortierschlüssel (SORTKEY) der Tabelle handelt. Das Standardverhalten für DROP COLUMN ist, RESTRICT wenn die Spalte abhängige Objekte enthält, z. B. eine Ansicht, einen Primärschlüssel, einen Fremdschlüssel oder eine UNIQUE Einschränkung.
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 Spalte aus einer externen Tabelle löschen, die mithilfe des AVRO Dateiformats definiert ist.
-
RESTRICTund CASCADE werden bei externen Tabellen ignoriert.
Sie können die Spalten der Richtlinientabelle, auf die innerhalb der Richtliniendefinition verwiesen wird, nicht löschen, es sei denn, Sie löschen oder trennen die Richtlinie. Dies gilt auch, wenn die CASCADE Option angegeben ist. Sie können andere Spalten in der Richtlinientabelle löschen.
Weitere Informationen finden Sie unter CREATE EXTERNAL TABLE.
-
- RESTRICT
-
Bei Verwendung mit RESTRICT bedeutet dies DROPCOLUMN, dass die zu löschende Spalte in den folgenden Fällen nicht gelöscht 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
RESTRICTkann nicht mit verwendet werdenCASCADE.
RESTRICTund CASCADE werden für externe Tabellen ignoriert.
-
- CASCADE
-
Bei Verwendung mit werden die angegebene Spalte und alles DROPCOLUMN, was von dieser Spalte abhängt, entfernt. CASCADEkann nicht mit verwendet werdenRESTRICT.
RESTRICTund CASCADE werden für externe Tabellen ignoriert.
Die folgenden Optionen gelten nur für externe Tabellen.
- SETLOCATION{'s3://Bucket/Ordner /' | '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 AWS unterstützten Regionen Einschränkungen von Amazon Redshift Spectrum finden Sie unter. Weitere Informationen zur Verwendung einer Manifestdatei finden Sie LOCATION in der CREATE EXTERNAL TABLE Parameter Referenz.
- SETFILEFORMATformatieren
-
Das Dateiformat für externe Datendateien.
Gültige Formate sind folgende:
-
AVRO
-
PARQUET
-
RCFILE
-
SEQUENCEFILE
-
TEXTFILE
-
- SETTABLEPROPERTIES('Eigenschaftsname' = 'Eigenschaftswert')
-
Eine Klausel, die die Tabellendefinition für Tabelleneigenschaften für eine externe Tabelle festlegt.
Anmerkung
Bei Tabelleneigenschaften muss die Groß-/Kleinschreibung beachtet werden.
- '=' 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. 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 [,...] SETLOCATION{'s3://Bucket/Ordner '| 's3://Bucket//manifest_file'}
-
Eine Klausel, die einen neuen Speicherort für eine oder mehrere Partitionsspalten festlegt.
- ADD[IF NOTEXISTS] 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 Klauseln mit einer einzigen... -Anweisung angeben. PARTITION ALTER TABLE ADD
Anmerkung
Wenn Sie den AWS Glue Katalog verwenden, können Sie mit einer einzigen ALTER TABLE Anweisung bis zu 100 Partitionen hinzufügen.
Die NOT EXISTS IF-Klausel gibt an, dass der Befehl keine Änderungen vornehmen sollte, 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 bei der Skripterstellung nützlich, damit das Skript nicht fehlschlägt, wenn ALTER TABLE versucht wird, eine bereits vorhandene Partition hinzuzufügen.
- DROPPARTITION(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.
- ROWLEVELSECURITY{ON |OFF} [CONJUNCTIONTYPE{AND| ODER}] [] FOR DATASHARES
Eine Klausel, die die Sicherheit auf Zeilenebene für eine Relation aktiviert oder deaktiviert.
Wenn die Sicherheit auf Zeilenebene für eine Relation aktiviert ist, können Sie nur die Zeilen lesen, für die Ihnen die Richtlinie auf Zeilenebene Zugriff gewährt. Wenn es keine Richtlinie gibt, die Ihnen Zugriff auf die Relation gewährt, können Sie keine Zeilen aus der Relation sehen. Nur Superuser und Benutzer oder Rollen, die diese
sys:secadmin
Rolle haben, können die ROW LEVEL SECURITY Klausel festlegen. Weitere Informationen finden Sie unter Sicherheit auf Zeilenebene.[CONJUNCTIONTYPE{AND| ODER}]
Eine Klausel, mit der Sie den Verbindungstyp einer Sicherheitsrichtlinie auf Zeilenebene für eine Relation auswählen können. Wenn mehrere Sicherheitsrichtlinien auf Zeilenebene an eine Beziehung angehängt sind, können Sie die Richtlinien mit der OR-Klausel AND oder kombinieren. Standardmäßig kombiniert Amazon Redshift RLS Richtlinien mit der AND Klausel. Superuser, Benutzer oder Rollen, denen diese
sys:secadmin
-Rolle zugewiesen wurde, können diese Klausel verwenden, um den Verbindungstyp der Sicherheitsrichtlinie auf Zeilenebene für eine Relation zu definieren. Weitere Informationen finden Sie unter Kombinieren mehrerer Richtlinien pro Benutzer.FOR DATASHARES
Eine Klausel, die bestimmt, ob auf eine RLS -geschützte Beziehung über Datashares zugegriffen werden kann. Standardmäßig kann auf eine RLS -geschützte Beziehung nicht über eine Datenfreigabe zugegriffen werden. Ein ALTER TABLE ROW LEVEL SECURITY Befehl, der mit dieser Klausel ausgeführt wird, wirkt sich nur auf die Barrierefreiheitseigenschaft der Relation aus. Die ROW LEVEL SECURITY Eigenschaft wird nicht geändert.
Wenn Sie eine RLS -geschützte Relation über Datashares zugänglich machen, bietet die Relation in der verbraucherseitigen, gemeinsam genutzten Datenbank keine Sicherheit auf Zeilenebene. Die Relation behält ihre Eigenschaft auf der Produzentenseite. RLS
Beispiele
Beispiele, die zeigen, wie der ALTER TABLE Befehl verwendet wird, finden Sie im Folgenden.