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.
Spalten umbenennen
Möglicherweise möchten Sie in Ihren Tabellen Spalten umbenennen, um die Schreibweise zu korrigieren, Spalten mit besser verständlichen Namen zu versehen oder eine vorhandene Spalte erneut nutzen, um eine Änderung der Reihenfolge für die Spalten zu vermeiden.
Sie können Spalten umbenennenTSV, wenn Sie Ihre Daten in CSV und oder in Parquet speichern und die so konfiguriert sindORC, dass sie nach Index gelesen werden. Weitere Informationen finden Sie unter Verstehen Sie den Indexzugriff für Apache ORC und Apache Parquet.
Athena liest Daten in CSV und TSV in der Reihenfolge der Spalten im Schema und gibt sie in derselben Reihenfolge zurück. Es verwendet keine Spaltennamen für die Zuordnung von Daten zu einer Spalte, weshalb Sie Spalten in CSV oder TSV ohne Unterbrechung von Athena-Abfragen umbenennen können.
Eine Strategie zum Umbenennen von Spalten besteht darin, eine neue Tabelle zu erstellen, die auf denselben zugrunde liegenden Daten basiert, jedoch unter Verwendung neuer Spaltennamen. Im folgenden Beispiel wird eine neue orders_parquet
-Tabelle orders_parquet_column_renamed
erstellt. Im Beispiel wird der Spaltenname `o_totalprice`
zu `o_total_price`
und führt dann eine Abfrage in Athena aus:
CREATE EXTERNAL TABLE orders_parquet_column_renamed ( `o_orderkey` int, `o_custkey` int, `o_orderstatus` string, `o_total_price` double, `o_orderdate` string, `o_orderpriority` string, `o_clerk` string, `o_shippriority` int, `o_comment` string ) STORED AS PARQUET LOCATION 's3://amzn-s3-demo-bucket/orders_parquet/';
Im Fall der Parquet-Tabelle wird die folgende Abfrage erfolgreich ausgeführt, aber die umbenannte Spalte zeigt keine Daten an, da auf die Spalte nicht über den Index, sondern über den Namen zugegriffen wurde (ein Standard in Parquet):
SELECT * FROM orders_parquet_column_renamed;
Eine Abfrage mit einer Tabelle in CSV sieht ähnlich aus:
CREATE EXTERNAL TABLE orders_csv_column_renamed ( `o_orderkey` int, `o_custkey` int, `o_orderstatus` string, `o_total_price` double, `o_orderdate` string, `o_orderpriority` string, `o_clerk` string, `o_shippriority` int, `o_comment` string ) ROW FORMAT DELIMITED FIELDS TERMINATED BY ',' LOCATION 's3://amzn-s3-demo-bucket/orders_csv/';
In der CSV Tabelle wird die folgende Abfrage ausgeführt, und die Daten werden in allen Spalten angezeigt, auch in der Spalte, die umbenannt wurde:
SELECT * FROM orders_csv_column_renamed;