View a markdown version of this page

SQL-Befehle - Amazon Redshift

Amazon Redshift unterstützt die Verwendung von Python-UDFs nach dem 30. Juni 2026 nicht mehr. Wir werden damit beginnen, es schrittweise durchzusetzen. Weitere Informationen zum Ende der Lebensdauer von Python und zu den Migrationsoptionen finden Sie im Blogbeitrag, der am 30. Juni 2025 veröffentlicht wurde.

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.

SQL-Befehle

Apache Iceberg-Tabellen in Amazon Redshift bieten eine leistungsstarke Möglichkeit, große analytische Datensätze in Ihrem Data Lake zu verwalten. Diese Tabellen unterstützen ACID-Transaktionen, Schemaentwicklung und Funktionen für Zeitreisen und sorgen gleichzeitig für eine hohe Leistung bei Analyse-Workloads. Mithilfe von Apache Iceberg-Tabellen können Sie Ihre Daten effizient organisieren und partitionieren, Dateiformate und Komprimierung kontrollieren und sich nahtlos in andere AWS Dienste integrieren.

Mit den Befehlen und können Sie partitionierte und unpartitionierte Iceberg-Tabellen erstellen. CREATE TABLE ... USING ICEBERG CREATE TABLE ... USING ICEBERG AS SELECT Sie können Iceberg-Tabellen entweder mithilfe der externen Schemanotation () oder der dreiteiligen Notation (external_schema.table_name) referenzieren. "catalog_name".database_name.table_name Die Beispiele in diesem Abschnitt veranschaulichen beide Methoden.

Nachdem Sie eine Tabelle erstellt haben, können Sie Daten mithilfe von INSERT Standardbefehlen hinzufügen. Beachten Sie, dass Amazon Redshift zwar mit vielen Iceberg-Datentypen funktioniert, Sie jedoch möglicherweise einige Datenformate konvertieren müssen, wenn Sie Informationen einfügen.

Sie können Iceberg-Tabellen mit dem Befehl anzeigen. SHOW TABLES Wenn Sie eine Tabelle aus dem entfernen möchten AWS Glue Data Catalog, können Sie den DROP TABLE Befehl verwenden. Beachten Sie, dass dadurch nur die Tabellenregistrierung entfernt wird. Die tatsächlichen Daten bleiben so lange gespeichert, bis Sie sie separat löschen.

Sie können vorhandene Daten auch mit den MERGE Befehlen DELETEUPDATE, und ändern. Informationen zum Ändern von Tabellendefinitionen wie Schema, Partitionsspezifikationen und Eigenschaften finden Sie unterTabellendefinitionen ändern. Andere DDL-Anweisungen, die dort nicht dokumentiert sind, werden für Iceberg-Tabellen nicht unterstützt.

Sie können in eine Iceberg-Tabelle schreiben, die nicht von Amazon Redshift erstellt wurde. Es gibt jedoch einige Einschränkungen:

  • Die Tabelle muss eine Iceberg v2- oder v3-Tabelle sein.

  • Die Tabelle muss Parquet als Standarddatenformat verwenden.

  • Für die Tabelle darf die Metadatenkomprimierung nicht auf True gesetzt sein.

  • Die Tabelle darf nicht aktiviert werden Write-Audit-Publish (WAP).

In den folgenden Abschnitten wird die SQL-Syntax für das Erstellen, Einfügen, Ändern und Verwalten von Iceberg-Tabellen in Amazon Redshift veranschaulicht.

CREATE TABLE

CREATE TABLE [IF NOT EXISTS] <external_schema>.<table_name> ( column_name data_type [DEFAULT literal_value] [, ...] ) USING ICEBERG [LOCATION 's3://your-bucket-name/prefix/'] [PARTITIONED BY [[column_name | transform_function]], ...] [TABLE PROPERTIES (['format-version'='<version>'] [, 'compression_type'='<compression_value>'])]

Sie können auch die dreiteilige Notation für S3-Tabellen-Buckets verwenden:

CREATE TABLE "<table_bucket_name>@s3tablescatalog".<database_name>.<table_name> ( column_name data_type [DEFAULT literal_value] [, ...] ) USING ICEBERG [PARTITIONED BY [[column_name | transform_function]], ...] [TABLE PROPERTIES (['format-version'='<version>'] [, 'compression_type'='<compression_value>'])]

Für den automatisch bereitgestellten Stammkatalog: awsdatacatalog

CREATE TABLE awsdatacatalog.<database_name>.<table_name> ( column_name data_type [DEFAULT literal_value] [, ...] ) USING ICEBERG LOCATION 's3://your-bucket-name/prefix/' [PARTITIONED BY [[column_name | transform_function]], ...] [TABLE PROPERTIES (['format-version'='<version>'] [, 'compression_type'='<compression_value>'])]

Beachten Sie bei Verwendung der externen Schemasyntax, dass es sich um einen vorhandenen externen Schemanamen handeln <external_schema> muss, in dem die externe Tabelle erstellt wird. Weitere Informationen zum Erstellen und Verwalten externer Schemas finden Sie unter CREATE EXTERNAL SCHEMA in der Amazon Redshift-Dokumentation.

Die LOCATION Klausel definiert den Tabellenspeicherort für diese neu erstellte Iceberg-Tabelle. LOCATIONist für Tabellen erforderlich, die mit externen Schemas oder dem awsdatacatalog Stammkatalog erstellt wurden. Es sollte ein leerer Speicherort sein, was bedeutet, dass es keine vorhandenen Amazon S3-Objekte gibt, die denselben Bucket und dasselbe Präfix verwenden. Die Amazon S3-Bucket-Region muss sich in derselben Region wie der Amazon Redshift-Cluster befinden. Für Amazon S3-Tabellen-Buckets LOCATION kann dies nicht angegeben werden, da der Tabellenstandort durch den Amazon S3-Tabellenkatalog () s3tablescatalog bestimmt wird.

AWS Bietet jedoch eine Methode, um Daten aus Iceberg-Tabellen, die in einer Tabelle gespeichert sind, AWS Glue Data Catalog in eine andere AWS-Region zu replizieren AWS-Region, sodass Sie den Schreibvorgang in eine andere Region replizieren können. Weitere Informationen finden Sie unter Daten replizieren. AWS-Regionen

PARTITIONED BYdefiniert die Iceberg-Tabellenpartition. Amazon Redshift unterstützt alle Iceberg v2-Partitionstransformationen mit Ausnahme von. void Hier ist die Liste der unterstützten Transformationen:

  • Identität

  • Eimer [N]

  • kürzen [W]

  • Jahr

  • Monat

  • Tag

  • Stunde

Die vollständigen Definitionen dieser Transformationen und der kompatiblen Datentypen finden Sie unter Partitionstransformationen in der Apache Iceberg-Dokumentation.

Das PARTITIONED BY unterstützt mehrstufige Partitionierung. Sie können z. B. den folgenden Befehl ausführen:

CREATE TABLE ... USING ICEBERG LOCATION ... PARTITIONED BY (bucket(16, id), year(ship_date));

Amazon Redshift unterstützt jedoch nicht die Verwendung einer einzelnen Spalte in mehr als einer Transformation. Beispielsweise wird die folgende Syntax nicht unterstützt:

CREATE TABLE ... USING ICEBERG LOCATION ... PARTITIONED BY (bucket(16, ship_date), year(ship_date));

Die TABLE PROPERTIES Klausel definiert die zusätzlichen Tabelleneigenschaften für diese Iceberg-Tabelle. Die unterstützten Tabelleneigenschaften sind format-version undcompression_type. Die format-version Eigenschaft gibt die Version des Iceberg-Tabellenformats an. Mögliche Werte sind '2' (Standard) und'3'. Die compression_type Eigenschaft definiert die Standardkomprimierung von Parquet-Datendateien. Wenn nicht angegeben, snappy wird sie als Komprimierungscodec verwendet. Die möglichen Werte für compression_type sind: zstdbrotli, gzipsnappy, unduncompressed.

Für Iceberg v3-Tabellen können Sie mithilfe des DEFAULT-Schlüsselworts Standardwerte für Spalten angeben. Standardspaltenwerte werden nur für Iceberg v3-Tabellen unterstützt. Amazon Redshift gibt einen Fehler zurück, wenn Sie einen Standardwert für eine Iceberg v2-Tabelle angeben. Nur Literalwerte werden als Standardwerte unterstützt.

CREATE TABLE <external_schema>.<table_name> ( column_name data_type [DEFAULT literal_value] [, ...] ) USING ICEBERG LOCATION 's3://your-bucket-name/prefix/' [PARTITIONED BY [[column_name | transform_function]], ...] [TABLE PROPERTIES ('format-version'='3' [, 'compression_type'='<compression_value>'])];

Beispiele mit Standardwerten:

-- External schema notation CREATE TABLE my_external_schema.orders ( order_id INT, status VARCHAR DEFAULT 'pending', region VARCHAR DEFAULT 'us-east-1' ) USING ICEBERG LOCATION 's3://amzn-s3-demo-bucket/orders/' TABLE PROPERTIES ('format-version'='3'); -- Three-part notation (awsdatacatalog / Glue) CREATE TABLE awsdatacatalog.my_glue_db.orders ( order_id INT, status VARCHAR DEFAULT 'pending', region VARCHAR DEFAULT 'us-east-1' ) USING ICEBERG LOCATION 's3://amzn-s3-demo-bucket/orders/' TABLE PROPERTIES ('format-version'='3'); -- Three-part notation (S3 Table Buckets) CREATE TABLE "amzn-s3-demo-bucket@s3tablescatalog".my_namespace.orders ( order_id INT, status VARCHAR DEFAULT 'pending', region VARCHAR DEFAULT 'us-east-1' ) USING ICEBERG TABLE PROPERTIES ('format-version'='3');
Anmerkung

CREATE TABLE ... LIKE ...wird für Iceberg-Tabellen nicht unterstützt. Iceberg-Tabellen unterstützen auch keine Spalteneinschränkungen und Spaltenattribute, wie dies bei RMS-Tabellen der Fall ist.

Alternativ können Sie eine Iceberg-Tabelle in einem einzigen Vorgang erstellen und mit Daten füllen, indem Sie: CREATE TABLE AS SELECT

CREATE TABLE AS SELECT

CREATE TABLE <external_schema>.<table_name> [( column_name[, ...] )] USING ICEBERG [LOCATION 's3://your-bucket-name/prefix/'] [PARTITIONED BY [[column_name | transform_function]], ...] [TABLE PROPERTIES ('compression_type'='<compression-value>')] AS SELECT query

Sie können auch die dreiteilige Notation verwenden, um Tabellen in automatisch bereitgestellten Katalogen zu erstellen:

CREATE TABLE "<catalog_name>".<database_name>.<table_name> [( column_name[, ...] )] USING ICEBERG [LOCATION 's3://your-bucket-name/prefix/'] [PARTITIONED BY [[column_name | transform_function]], ...] [TABLE PROPERTIES ('compression_type'='<compression-value>')] AS SELECT query

Dies ähnelt der Anweisung, mit der Ausnahme, dass darauf eine CREATE TABLE SELECT Anweisung CREATE folgt, um die Tabelle mit Abfrageergebnissen zu füllen. SELECT

Sie können die Datentypen mit der CREATE TABLE Klausel hier nicht mehr angeben, da die SELECT Abfrage die Spaltendatentypen bestimmt.

Wenn die SELECT Abfrage aus irgendeinem Grund fehlschlägt, schlägt diese Abfrage fehl und die Iceberg-Tabelle wird nicht erstellt.

Für Iceberg v3-Tabellen geben Sie dies 'format-version'='3' in der TABLE PROPERTIES-Klausel an. Standardspaltenwerte werden nicht von der Quelltabelle geerbt.

-- External schema notation CREATE TABLE my_external_schema.orders_backup ( order_id, status, region ) USING ICEBERG LOCATION 's3://amzn-s3-demo-bucket/orders-backup/' TABLE PROPERTIES ('format-version'='3') AS SELECT order_id, status, region FROM my_external_schema.orders; -- Three-part notation (awsdatacatalog / Glue) CREATE TABLE awsdatacatalog.my_glue_db.orders_backup ( order_id, status, region ) USING ICEBERG LOCATION 's3://amzn-s3-demo-bucket/orders-backup/' TABLE PROPERTIES ('format-version'='3') AS SELECT order_id, status, region FROM awsdatacatalog.my_glue_db.orders; -- Three-part notation (S3 Table Buckets) CREATE TABLE "amzn-s3-demo-bucket@s3tablescatalog".my_namespace.orders_backup ( order_id, status, region ) USING ICEBERG TABLE PROPERTIES ('format-version'='3') AS SELECT order_id, status, region FROM "amzn-s3-demo-bucket@s3tablescatalog".my_namespace.orders;

Sie können die Struktur Ihrer Iceberg-Tabellen mit SHOW TABLE folgenden Methoden anzeigen:

SHOW TABLE

SHOW TABLE <external_schema>.<table_name>

Sie können auch die dreiteilige Notation mit automatisch eingehängten Katalogen verwenden:

SHOW TABLE "<catalog_name>".<database_name>.<table_name>

SHOW TABLEzeigt die CREATE TABLE Anweisung für die Iceberg-Tabelle an. Der Befehl zeigt die entsprechenden Ergebnisse auf der Grundlage des Tabellentyps an. Das Folgende ist ein Beispiel für die SHOW TABLE Ausgabe für die Iceberg-Tabelle:

CREATE TABLE my_schema.items (id int, price decimal(5, 2)) USING ICEBERG LOCATION 's3://my_s3_bucket/items/' PARTITIONED BY (bucket(16, id)) TABLE PROPERTIES ('compression_type'='snappy')
Anmerkung

Bei Amazon S3-Tabellen wird die LOCATION Klausel in den SHOW TABLE Ergebnissen weggelassen, da der Tabellenspeicherort vom Amazon S3-Tabellenkatalog verwaltet wird.

SHOW TABLEZeigt für Iceberg v3-Tabellen in der Ausgabe Standardspaltenwerte an.

SHOW TABLE my_external_schema.orders; -- Output includes the default values in the column definitions: CREATE TABLE my_external_schema.orders ( id int, status varchar DEFAULT 'active', priority int DEFAULT 0 ) USING ICEBERG LOCATION 's3://amzn-s3-demo-bucket/orders/' TABLE PROPERTIES ('format-version'='3');

Nach dem Erstellen von Tabellen können Sie Daten hinzufügen, indem INSERT INTO Sie:

INSERT INTO

INSERT INTO <external_schema>.<table_name> [(column_name [, ...])] VALUES (...) INSERT INTO <external_schema>.<table_name> [(column_name [, ...])] (SELECT query) -- Using three-part notation for S3 table buckets: INSERT INTO "<table_bucket_name>@s3tablescatalog".<database_name>.<table_name> [(column_name [, ...])] VALUES (...) INSERT INTO "<table_bucket_name>@s3tablescatalog".<database_name>.<table_name> [(column_name [, ...])] (SELECT query) -- Using three-part notation for the awsdatacatalog root catalog: INSERT INTO awsdatacatalog.<database_name>.<table_name> [(column_name [, ...])] VALUES (...) INSERT INTO awsdatacatalog.<database_name>.<table_name> [(column_name [, ...])] (SELECT query)

Sie können eine INSERT INTO Iceberg-Tabelle mit der obigen Syntax erstellen. Wenn eine VALUES Klausel verwendet wird, geben Sie die Werte für Spalten an, die von aufgeführt werdencolumn_name, oder für alle Spalten, wenn column_name ein Teil weggelassen wird.

Wenn Daten in eine partitionierte Tabelle eingefügt werden, werden neue Zeilen gemäß der vordefinierten Partitionsspezifikation verteilt. Wenn die SELECT Abfrage aus irgendeinem Grund fehlschlägt, schlägt die Abfrage fehl und es werden keine Daten in die Iceberg-Tabelle eingefügt.

Wenn bei Iceberg v3-Tabellen mit Standardspaltenwerten eine Spalte mit einem Standardwert in der INSERT-Anweisung weggelassen wird oder DEFAULT als Wert angegeben wird, wird der Standardwert in die Datendatei geschrieben.

DELETE

Die DELETE Abfrage für die Iceberg-Tabelle verwendet die vorhandene DELETE Syntax in der RMS-Tabelle:

[ WITH [RECURSIVE] common_table_expression [, common_table_expression , ...] ] DELETE [ FROM ] iceberg_table [ { USING } table_name, ... ] [ WHERE condition ]

Sie können auch die dreiteilige Notation für S3-Tabellen-Buckets verwenden:

[ WITH [RECURSIVE] common_table_expression [, common_table_expression , ...] ] DELETE [ FROM ] "<table_bucket_name>@s3tablescatalog".<database_name>.<table_name> [ { USING } table_name, ... ] [ WHERE condition ]

Für den automatisch bereitgestellten Stammkatalog: awsdatacatalog

[ WITH [RECURSIVE] common_table_expression [, common_table_expression , ...] ] DELETE [ FROM ] awsdatacatalog.<database_name>.<table_name> [ { USING } table_name, ... ] [ WHERE condition ]

Auf den iceberg_table kann mithilfe des <external_schema>.<external_table_name> Formulars verwiesen werden, oder Sie verwenden die dreiteilige Notation für den automatisch eingehängten Katalog. Weitere Informationen finden Sie unter Referenzieren von Iceberg-Tabellen in Amazon Redshift.

Die Klausel table_name in der USING Klausel wird zur Verknüpfung mit der Zieltabelle verwendet, um Zeilen zu löschen, die die Bedingung erfüllen. WHERE Das table_name kann eine Iceberg-Tabelle oder eine Amazon Redshift RMS-Tabelle sein.

Da Iceberg ein verstecktes Partitionsschema verwendet, können Benutzer DELETE Abfragen verwenden, um Partitionen zu entfernen, wodurch der gleiche Effekt wie ALTER TABLE ... DROP PARTITION ... bei Hive-Tabellen erzielt wird.

Stellen Sie sich zum Beispiel eine partitionierte Iceberg-Tabelle wie die folgende vor:

CREATE TABLE my_external_schema.lineitem (l_item_id int, l_ship_date varchar, ... ) USING ICEBERG LOCATION ... PARTITIONED BY l_ship_date;

Dann können Sie eine Partition entfernen, indem Sie eine Abfrage wie die folgende verwenden:

DELETE FROM my_external_schema.lineitem WHERE l_ship_date = '20251231';

Bei Abfragen wie dieser optimiert Amazon Redshift die Ausführung so, dass nur Operationen ausgeführt werden, die nur Metadaten enthalten, und die Ausführung wird kurzgeschlossen. Anders als bei einer normalen DELETE Abfrage werden bei der Abfrage „Nur Metadaten löschen“ keine Ausführungsschritte angezeigt, und zwar inEXPLAIN:

explain DELETE FROM my_external_schema.lineitem WHERE l_ship_date = '20251231'; QUERY PLAN ------------ "XN Seq Scan Metadata of my_external_schema.lineitem location: "s3://s3-path//table-location" format:ICEBERG (cost=0.00..0.01 rows=0 width=0)" (0 rows)

UPDATE

Die UPDATE Abfragesyntax für die Iceberg-Tabelle ist der vorhandenen UPDATE Syntax für die RMS-Tabelle sehr ähnlich:

[ WITH [RECURSIVE] common_table_expression [, common_table_expression , ...] ] UPDATE iceberg_table [ [ AS ] alias ] SET column = { expression } [,...] [ FROM fromlist ] [ WHERE condition ]

Sie können auch die dreiteilige Notation für S3-Tabellen-Buckets verwenden:

[ WITH [RECURSIVE] common_table_expression [, common_table_expression , ...] ] UPDATE "<table_bucket_name>@s3tablescatalog".<database_name>.<table_name> [ [ AS ] alias ] SET column = { expression } [,...] [ FROM fromlist ] [ WHERE condition ]

Für den automatisch bereitgestellten Stammkatalog: awsdatacatalog

[ WITH [RECURSIVE] common_table_expression [, common_table_expression , ...] ] UPDATE awsdatacatalog.<database_name>.<table_name> [ [ AS ] alias ] SET column = { expression } [,...] [ FROM fromlist ] [ WHERE condition ]

Auf den iceberg_table kann mithilfe des <external_schema>.<external_table_name> Formulars verwiesen werden, oder Sie verwenden die dreiteilige Notation für den automatisch eingehängten Katalog. Siehe Referenzieren von Iceberg-Tabellen in Amazon Redshift.

Sie können eine Tabelle aktualisieren, indem Sie Informationen in anderen Tabellen referenzieren. Listen Sie diese anderen Tabellen in der FROM-Klausel auf oder verwenden Sie eine Unterabfrage als Teil der WHERE-Bedingung. Die Quelltabellen können entweder Iceberg-Tabellen oder Amazon Redshift RMS-Tabellen sein.

UPDATEkann auch auf einer partitionierten Tabelle ausgeführt werden. Wenn UPDATE sich Spaltenwerte ändern, die zur aktuellen Partitionsspezifikation gehören, wird die neue aktualisierte Zeile auf der Grundlage des neu aktualisierten Werts in die neue Partition eingefügt.

Stellen Sie sich zum Beispiel eine partitionierte Iceberg-Tabelle wie die folgende vor:

CREATE TABLE my_external_schema.lineitem (l_item_id int, l_ship_date varchar, ... ) USING ICEBERG LOCATION ... PARTITIONED BY l_ship_date; INSERT INTO my_external_schema.lineitem VALUES (10099, '20251231', ...);

Und wenn Sie die folgende Aktualisierungsabfrage ausführen:

UPDATE my_external_schema.lineitem SET l_ship_date = '20260101' WHERE l_item_id = 10099;

Die Zeile mit l_item_id 10099 wechselt von der Partition 20251231 zur neuen Partition20260101.

Es ist auch wichtig zu beachten, dass mehrere Kandidatenwerte möglich UPDATE sind. Betrachten Sie die folgende Abfrage:

CREATE TABLE my_ext_schema.t1(x1 int, y1 int) USING ICEBERG LOCATION ...; CREATE TABLE my_ext_schema.t2(x2 int, y2 int) USING ICEBERG LOCATION ...; INSERT INTO my_ext_schema.t1 VALUES (1,10), (2,20), (3,30); INSERT INTO my_ext_schema.t2 VALUES (2,40), (2,50); UPDATE my_ext_schema.t1 SET y1=y2 FROM my_ext_schema.t2 WHERE x1=x2;

In diesem Fall kann y1 40 oder 50 sein. Das Ergebnis ist nicht deterministisch. Sie können den Konfigurationsparameter error_on_nondeterministic_update auf true setzen, um in einem solchen Fall einen Abfragefehler zu erzwingen. Dies entspricht dem UPDATE Verhalten der bestehenden RMS-Tabelle. Weitere Informationen finden Sie unter https://docs.aws.amazon.com/redshift/latest/dg/r_error_on_nondeterministic_update.html error_on_nondeterministic_update.

MERGE

Die MERGE Abfrage führt bedingt Zeilen aus einer Quelltabelle mit einer Zieltabelle zusammen. Sie verwendet dieselbe MERGE Abfragesyntax wie die bestehende RMS-Tabelle:

MERGE INTO target_iceberg_table USING source_table [ [ AS ] alias ] ON match_condition [ WHEN MATCHED THEN { UPDATE SET col_name = { expr } [,...] | DELETE } WHEN NOT MATCHED THEN INSERT [ ( col_name [,...] ) ] VALUES ( { expr } [, ...] ) | REMOVE DUPLICATES ]

Sie können auch die dreiteilige Notation für S3-Tabellen-Buckets verwenden:

MERGE INTO "<table_bucket_name>@s3tablescatalog".<database_name>.<table_name> USING source_table [ [ AS ] alias ] ON match_condition [ WHEN MATCHED THEN { UPDATE SET col_name = { expr } [,...] | DELETE } WHEN NOT MATCHED THEN INSERT [ ( col_name [,...] ) ] VALUES ( { expr } [, ...] ) | REMOVE DUPLICATES ]

Für den automatisch bereitgestellten Stammkatalog: awsdatacatalog

MERGE INTO awsdatacatalog.<database_name>.<table_name> USING source_table [ [ AS ] alias ] ON match_condition [ WHEN MATCHED THEN { UPDATE SET col_name = { expr } [,...] | DELETE } WHEN NOT MATCHED THEN INSERT [ ( col_name [,...] ) ] VALUES ( { expr } [, ...] ) | REMOVE DUPLICATES ]

Auf den target_iceberg_table kann mithilfe des <external_schema>.<external_table_name> Formulars verwiesen werden, oder Sie verwenden die dreiteilige Notation für den automatisch eingehängten Katalog. Siehe Referenzieren von Iceberg-Tabellen in Amazon Redshift.

Das source_table kann entweder eine Iceberg-Tabelle oder eine Amazon Redshift RMS-Tabelle sein.

Wenn der MERGE Befehl verwendet REMOVE DUPLICATES wird, verwendet er den vereinfachten Modus. Weitere Informationen zum vereinfachten Modus finden Sie im ursprünglichen MERGE Befehlsdokument.

Während der Ausführung der MERGE Abfrage generiert und speichert Amazon Redshift Zwischendatendateien am Speicherort der Zieltabelle. Diese Dateien werden am Ende der Abfrage als Müll gesammelt. Aus diesem Grund würde für die MERGE Abfrage eine DELETE Genehmigung für den Amazon S3-Bucket erforderlich sein, um ordnungsgemäß zu funktionieren. Ein Fehler aufgrund unzureichender Berechtigungen würde ausgelöst, wenn der Garbage Collection-Vorgang fehlschlägt. Bei Amazon S3-Tabellen wird die Garbage Collection vom Amazon S3-Tabellenservice verwaltet. Daher ist für die Ausführung der MERGE Abfrage keine DELETE Erlaubnis erforderlich.

DROP TABLE

Verwenden Sie den DROP TABLE folgenden Befehl, um eine Iceberg-Tabelle aus dem Katalog zu entfernen:

DROP TABLE <external_schema>.<table_name>

Bei automatisch eingehängten Katalogen können Sie auch die dreiteilige Notation verwenden:

DROP TABLE "<catalog_name>".<database_name>.<table_name>

Das Löschen einer Iceberg-Tabelle ist ein reiner Metadatenvorgang. Es entfernt den Tabelleneintrag aus AWS Glue Data Catalog einem Amazon S3-Tabellenkatalog, wenn es sich um eine Amazon S3-Tabelle handelt. Amazon Redshift bereinigt oder löscht keine vorhandenen Daten- oder Metadatendateien unter dem Tabellenspeicherort. Sie können Funktionen in AWS Glue und Amazon S3-Tabellen verwenden, um verwaiste Dateien zu entfernen. Weitere Informationen finden Sie unter Löschen verwaister Dateien. AWS Glue Informationen zu Amazon S3-Tabellen finden Sie unter Tabellenpflege.