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.
Ändern Sie den Datentyp einer Spalte
Möglicherweise möchten Sie einen anderen Spaltentyp verwenden, wenn der vorhandene Typ nicht mehr die erforderliche Menge an Informationen aufnehmen kann. Beispielsweise könnten die Werte einer ID-Spalte die Größe des INT
-Datentyps überschreiten und die Verwendung des BIGINT
-Datentyps erfordern.
Überlegungen
Berücksichtigen Sie bei der Verwendung eines anderen Datentyps für eine Spalte die folgenden Punkte:
-
In den meisten Fällen können Sie den Datentyp einer Spalte nicht direkt ändern. Stattdessen erstellen Sie die Athena-Tabelle neu und definieren die Spalte mit dem neuen Datentyp.
-
Nur bestimmte Datentypen können als andere Datentypen gelesen werden. In der Tabelle in diesem Abschnitt finden Sie die Datentypen, die so behandelt werden können.
-
Für Daten in Parquet und ORC können Sie keinen anderen Datentyp für eine Spalte verwenden, wenn die Tabelle nicht partitioniert ist.
-
Bei partitionierten Tabellen in Parquet und ORC kann sich der Spaltentyp einer Partition vom Spaltentyp einer anderen Partition unterscheiden, und Athena verwendet, wenn möglich, den gewünschten Typ.
CAST
Weitere Informationen finden Sie unter Vermeiden Sie Schemakonflikte bei Tabellen mit Partitionen. -
Bei Tabellen, die LazySimpleSerDenur mit der Anweisung erstellt wurden, ist es möglich, die
ALTER TABLE REPLACE COLUMNS
Anweisung zu verwenden, um vorhandene Spalten durch einen anderen Datentyp zu ersetzen. Alle vorhandenen Spalten, die Sie behalten möchten, müssen jedoch ebenfalls in der Anweisung neu definiert werden, andernfalls werden sie gelöscht. Weitere Informationen finden Sie unter ALTER TABLE REPLACE COLUMNS. -
Nur für Apache-Iceberg-Tabellen können Sie die ALTER TABLE CHANGE COLUMN-Anweisung verwenden, um den Datentyp einer Spalte zu ändern.
ALTER TABLE REPLACE COLUMNS
wird für Iceberg-Tabellen nicht unterstützt. Weitere Informationen finden Sie unter Evolve Iceberg-Tabellenschema.
Wichtig
Wir raten Ihnen dringend, Ihre Abfragen zu testen und zu überprüfen, bevor Sie Datentyp-Änderungen vornehmen. Wenn Athena den Zieldatentyp nicht verwenden kann, schlägt die CREATE TABLE
-Abfrage möglicherweise fehl.
Verwenden Sie kompatible Datentypen
Verwenden Sie nach Möglichkeit kompatible Datentypen. In der folgenden Tabelle sind Datentypen aufgeführt, die wie andere Datentypen behandelt werden können:
Original-Datentyp | Verfügbare Ziel-Datentypen |
---|---|
STRING |
BYTE , TINYINT , SMALLINT ,
INT , BIGINT |
BYTE |
TINYINT , SMALLINT , INT ,
BIGINT |
TINYINT |
SMALLINT , INT ,
BIGINT |
SMALLINT |
INT , BIGINT |
INT |
BIGINT |
FLOAT |
DOUBLE |
Im folgenden Beispiel wird die CREATE TABLE
-Anweisung für die orders_json
-Originaltabelle verwendet, um eine neue Tabelle mit dem Namen orders_json_bigint
zu erstellen. Die neue Tabelle verwendet BIGINT
statt INT
als Datentyp für die `o_shippriority`
-Spalte.
CREATE EXTERNAL TABLE orders_json_bigint ( `o_orderkey` int, `o_custkey` int, `o_orderstatus` string, `o_totalprice` double, `o_orderdate` string, `o_orderpriority` string, `o_clerk` string, `o_shippriority` BIGINT ) ROW FORMAT SERDE 'org.openx.data.jsonserde.JsonSerDe' LOCATION 's3://amzn-s3-demo-bucket/orders_json';
Die folgende Abfrage wird erfolgreich ausgeführt, ähnlich wie die SELECT
-Originalabfrage vor dem Ändern des Datentyps:
Select * from orders_json LIMIT 10;