

 Amazon Redshift unterstützt ab Patch 198 nicht mehr die Erstellung neuer Python-UDFs. Bestehende Python-UDFs werden bis zum 30. Juni 2026 weiterhin funktionieren. Weitere Informationen finden Sie im [Blog-Posting](https://aws.amazon.com/blogs/big-data/amazon-redshift-python-user-defined-functions-will-reach-end-of-support-after-june-30-2026/). 

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.

# Tabellendefinitionen ändern
<a name="iceberg-alter-table"></a>

`ALTER TABLE`Anweisungen werden verwendet, um Tabellendefinitionen, einschließlich Schema, Partitionsspezifikationen und Eigenschaften, zu ändern. Sie können diese DDL-Anweisungen verwenden, um Ihre Iceberg-Tabellen direkt über Amazon Redshift zu verwalten.

Alle `ALTER TABLE` Anweisungen unterstützen die Verwendung externer Schemareferenzen oder dreiteiliger Notationsreferenzen für Iceberg-Tabellen. In den folgenden Syntaxbeispielen `{{iceberg_table}}` kann es sich um eine der folgenden Optionen handeln:

```
-- External schema notation:
{{<external_schema>}}.{{<table_name>}}

-- Three-part notation for S3 table buckets:
"{{<table_bucket_name>}}@s3tablescatalog".{{<database_name>}}.{{<table_name>}}

-- Three-part notation for the awsdatacatalog root catalog:
awsdatacatalog.{{<database_name>}}.{{<table_name>}}
```

Weitere Informationen finden Sie unter [Verweisen auf Iceberg-Tabellen in Amazon Redshift](referencing-iceberg-tables.md).

Beachten Sie bei der Verwendung von `ALTER TABLE` Anweisungen Folgendes:
+ `ALTER TABLE`Anweisungen unterstützen derzeit nur Iceberg v2-Tabellen.
+ Alle `ALTER TABLE` Anweisungen sind reine Metadaten-Operationen.
+ `ALTER TABLE`Anweisungen unterstützen keine Tabellen mit komplexen Spalten.

**Contents**
+ [ALTER TABLE RENAME COLUMN](#iceberg-alter-table-rename-column)
+ [ADD/DROP TABELLENSPALTE ÄNDERN](#iceberg-alter-table-add-drop-column)
+ [TABELLE ÄNDERN, SPALTE ÄNDERN](#iceberg-alter-table-alter-column)
+ [TABELLE ÄNDERN, TABELLENEIGENSCHAFTEN FESTLEGEN](#iceberg-alter-table-set-properties)
+ [PARTITIONSFELD „TABELLE HINZUFÜGEN“, „LÖSCHEN“ und „ERSETZEN“ ÄNDERN](#iceberg-alter-table-partition-field)

## ALTER TABLE RENAME COLUMN
<a name="iceberg-alter-table-rename-column"></a>

```
ALTER TABLE {{iceberg_table}}
RENAME [COLUMN] {{col_name}} TO {{new_name}};
```

`ALTER TABLE RENAME COLUMN`benennt eine bestehende Spalte um. Dabei `{{col_name}}` kann es sich um eine Partitionsspalte oder eine nicht partitionierte Spalte handeln. Nach der Umbenennung ändern sich der Spaltendatentyp und die Partitionsspezifikation nicht.

**Anmerkung**  
`ALTER TABLE RENAME COLUMN`wird für AWS Lake Formation registrierte Tabellen nicht unterstützt.

## ADD/DROP TABELLENSPALTE ÄNDERN
<a name="iceberg-alter-table-add-drop-column"></a>

```
ALTER TABLE {{iceberg_table}}
ADD [COLUMN] {{col_name}} {{col_type}};
```

```
ALTER TABLE {{iceberg_table}}
DROP [COLUMN] {{col_name}};
```

`ADD COLUMN`fügt einer vorhandenen Iceberg-Tabelle eine Spalte hinzu. Sie können jeden Datentyp verwenden, der von Amazon Redshift Iceberg Writes unterstützt wird. Weitere Informationen finden Sie unter [Mit Apache-Iceberg-Tabellen unterstützte DatentypenUnterstützte Datentypen](querying-iceberg-supported-data-types.md).

`ADD COLUMN`ist eine reine Metadaten-Operation. Die Werte neu hinzugefügter Spalten in vorhandenen Zeilen sind. `NULL`

`DROP COLUMN`löscht eine Spalte aus einer vorhandenen Iceberg-Tabelle. Bei partitionierten Tabellen können Sie keine Spalte löschen, die zur aktuellen Partitionsspezifikation gehört. Sie müssen zuerst das Partitionsfeld entfernen, das die Spalte betrifft, bevor Sie die Spalte löschen. Weitere Informationen finden Sie unter [PARTITIONSFELD „TABELLE HINZUFÜGEN“, „LÖSCHEN“ und „ERSETZEN“ ÄNDERN](#iceberg-alter-table-partition-field).

## TABELLE ÄNDERN, SPALTE ÄNDERN
<a name="iceberg-alter-table-alter-column"></a>

```
ALTER TABLE {{iceberg_table}}
    ALTER COLUMN {{column_name}} TYPE {{updated_data_type}};
```

`ALTER TABLE ALTER COLUMN`ändert den Datentyp einer vorhandenen Spalte. Nur eine Erweiterung des Typs ist zulässig, keine Verengung. Da Daten nach dem nicht neu geschrieben werden`ALTER`, kann eine Eingrenzung der Datentypen zu einem Überlauf führen, wenn die vorhandenen Tabellendaten verwendet werden. Die folgenden Typerweiterungen sind gemäß der Iceberg-Spezifikation zulässig:

```
int → bigint
float → double
decimal(P, S) → decimal(P2, S) where P2 > P (scale cannot be changed)
```

In Amazon Redshift können Datentypen Aliase haben. Beispielsweise verwenden 4-Byte-Ganzzahlen den Typnamen oder. `int` `int4` Solange sie in Iceberg-Typen auf 4-Byte-Ganzzahlen vom Typ int abgebildet sind, ist eine Typerweiterung auf 8-Byte-Ganzzahlen zulässig.

Beispielsweise wird eine Iceberg-Tabelle mit 4-Byte-Integer-Typen erstellt:

```
CREATE TABLE {{iceberg_table}} (cint int) USING ICEBERG LOCATION 's3://{{your-bucket-name}}/prefix/';
```

Sie kann durch diese Aussage erweitert werden: `ALTER`

```
ALTER TABLE {{iceberg_table}} ALTER COLUMN cint TYPE int8;
```

Die vollständige Liste der Datentypzuordnungen zwischen Amazon Redshift Redshift-Typen und Iceberg-Typen finden Sie unter. [Mit Apache-Iceberg-Tabellen unterstützte DatentypenUnterstützte Datentypen](querying-iceberg-supported-data-types.md)

Die Erweiterung des Typs einer Spalte, die zur vorhandenen Partitionsspezifikation gehört, wird nicht unterstützt.

## TABELLE ÄNDERN, TABELLENEIGENSCHAFTEN FESTLEGEN
<a name="iceberg-alter-table-set-properties"></a>

```
ALTER TABLE {{iceberg_table}}
SET TABLE PROPERTIES (
 'compression_type' = '{{compression_value}}');
```

Mit dieser Anweisung können Sie die Standardeigenschaft der Tabelle überschreiben. Derzeit ist die einzige Tabelleneigenschaft, die für diese Anweisung zulässig ist`compression_type`. Sie können sie überschreiben, um einen anderen Komprimierungstyp für die Parquet-Dateien der Iceberg-Tabelle zu verwenden. Daten, die nach dem eingefügt werden, `ALTER` verwenden den neuen Komprimierungstyp.

Die möglichen Werte für `compression_type` sind: `brotli``gzip`,`snappy`,`uncompressed`, und`zstd`.

## PARTITIONSFELD „TABELLE HINZUFÜGEN“, „LÖSCHEN“ und „ERSETZEN“ ÄNDERN
<a name="iceberg-alter-table-partition-field"></a>

```
ALTER TABLE {{iceberg_table}}
    ADD PARTITION FIELD {{column_name}} | {{transform_function}};
```

```
ALTER TABLE {{iceberg_table}}
    DROP PARTITION FIELD {{column_name}} | {{transform_function}};
```

```
ALTER TABLE {{iceberg_table}}
    REPLACE PARTITION FIELD {{column_name}} | {{transform_function}}
        WITH {{column_name}} | {{transform_function}};
```

Die `[ADD | DROP | REPLACE] PARTITION FIELD` Anweisungen ermöglichen es Ihnen, die bestehende Tabellenpartitionsspezifikation zu ändern, wodurch die Partitionsentwicklung über Amazon Redshift unterstützt wird.

Die `ALTER` Anweisungen für die Partitionsspezifikation ändern nur die Tabellenmetadaten und partitionieren die vorhandenen Tabellendaten nicht neu. Danach folgen neue Daten`ALTER`, die in die Tabelle eingefügt werden, die neu definierte Partitionsspezifikation.

Beachten Sie die folgenden Einschränkungen für diese Anweisungen:
+ Wenn Sie mit `ADD` oder ein neues Partitionsfeld definieren`REPLACE ... WITH ...`, darf das neue Feld keine Spalte enthalten, die bereits Teil anderer Partitionsfelder ist. Dies ist dieselbe Einschränkung wie bei der Definition der ursprünglichen Partitionsspezifikation unter`CREATE TABLE`. Weitere Informationen finden Sie unter [CREATE TABLE](iceberg-writes-sql-syntax.md#iceberg-writes-create-table).

  Wenn Sie beispielsweise eine Tabelle haben:

  ```
  CREATE TABLE {{iceberg_table}} ... PARTITIONED BY year(ship_date) USING ICEBERG ...;
  ```

  Folgendes schlägt fehl, weil `ship_date` es bereits Teil eines vorhandenen Partitionsfeldes ist:

  ```
  ALTER TABLE {{iceberg_table}} ADD PARTITION FIELD bucket(128, ship_date);
  ```
+ Beim Hinzufügen eines neuen Partitionsfeldes wird das neu hinzugefügte Feld immer als letzte Partitionsebene der Tabelle behandelt. Beispiel:

  ```
  CREATE TABLE {{iceberg_table}} ... PARTITIONED BY year(ship_date) USING ICEBERG ...;
  ALTER TABLE {{iceberg_table}} ADD PARTITION FIELD bucket(256, item_id);
  ```

  Die Spezifikation der Tabellenpartition ist dieselbe wie:

  ```
  CREATE TABLE {{iceberg_table}} ... PARTITIONED BY (year(ship_date), bucket(256, item_id))
      USING ICEBERG ...;
  ```
+ Wenn Sie ein Partitionsfeld löschen, ist es nicht auf die letzte Partitionsebene beschränkt. Sie können jedes vorhandene Partitionsfeld löschen. Beispiel:

  ```
  CREATE TABLE {{iceberg_table}} ... PARTITIONED BY (year(ship_date), bucket(256, item_id))
      USING ICEBERG ...;
  ALTER TABLE {{iceberg_table}} DROP PARTITION FIELD year(ship_date);
  ```

  Danach wird `ALTER` die Tabelle nur noch nach partitioniert`bucket(256, item_id)`.
+ Beim Aufruf `REPLACE PARTITION FIELD ... WITH ...` kann das zu ersetzende Partitionsfeld ein beliebiges Feld in der Spezifikation sein und ist nicht auf das letzte Feld beschränkt. Beispiel:

  ```
  CREATE TABLE {{iceberg_table}} ... PARTITIONED BY (year(ship_date), bucket(256, item_id))
      USING ICEBERG ...;
  ALTER TABLE {{iceberg_table}} REPLACE PARTITION FIELD year(ship_date) WITH month(ship_date);
  ```

  Danach wird `ALTER` `(month(ship_date), bucket(256, item_id))` die Tabellenpartition.
+ Die `void` Transformation wird in `ALTER` Partitionsanweisungen nicht unterstützt.