ALTER TABLE REPLACE COLUMNS - Amazon Athena

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

ALTER TABLE REPLACE COLUMNS

從透過 LazySimpleSerDe 建立的資料表中移除所有現有的資料欄,並用指定的一組資料欄取代它們。使用選用的 PARTITION 語法時,會更新分割區中繼資料。您也可以使用 ALTER TABLE REPLACE COLUMNS 透過僅指定您想要保留的資料欄來刪除其他資料欄。

概要

ALTER TABLE table_name [PARTITION (partition_col1_name = partition_col1_value [,partition_col2_name = partition_col2_value][,...])] REPLACE COLUMNS (col_name data_type [, col_name data_type, ...])

參數

PARTITION (partition_col_name = partition_col_value [,...])

以您指定的資料欄名稱/值組合來指定分割區。只有當資料欄的資料類型為字串時,才需要用引號括住 partition_col_value

REPLACE COLUMNS (col_name data_type [,col_name data_type,...])

以指定的資料欄名稱和資料類型取代現有資料欄。

備註

  • 如需在執行 ALTER TABLE REPLACE COLUMNS 之後,查看 Athena 查詢編輯器導覽窗格中的資料表資料表欄位變更,請手動重新整理編輯器中的資料表清單,然後再次展開資料表。

  • ALTER TABLE REPLACE COLUMNS 不適用於具有 date 資料類型的資料欄。若要解決這個問題,請轉為使用資料表中的 timestamp 資料類型。

  • 請注意,即使您只取代單一資料欄,語法必須是 ALTER TABLE table-name REPLACE COLUMNS,以及複數形式的資料欄。您不僅必須指定要取代的資料欄,還必須指定要保留的資料欄 – 如果不是,您未指定的資料欄將會遭到捨棄。這種語法和行為從 Apache Hive DDL 衍生。如需參考,請參閱 Apache 文件中的新增/取代資料欄

範例

在下列範例中,資料表 names_cities 是使用 LazySimpleSerDe 所建立的,並有三個名為 col1col2col3 的資料欄。所有資料欄均為 string 類型。若要顯示資料表中的資料欄,下列命令會使用 SHOW COLUMNS 陳述式。

SHOW COLUMNS IN names_cities

查詢的結果:

col1 col2 col3

下列 ALTER TABLE REPLACE COLUMNS 命令將資料欄名稱取代為 first_namelast_namecity。基礎來源資料不受影響。

ALTER TABLE names_cities REPLACE COLUMNS (first_name string, last_name string, city string)

若要測試結果,請重新執行 SHOW COLUMNS

SHOW COLUMNS IN names_cities

查詢的結果:

first_name last_name city

顯示新資料欄名稱的另一種方法是在 Athena 查詢編輯器中預覽資料表,或執行您自己的 SELECT 查詢。