本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
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
,以及複數形式的資料欄。您不僅必須指定要取代的資料欄,還必須指定要保留的資料欄 – 如果不是,您未指定的資料欄將會遭到捨棄。這種語法和行為從 Apache Hive DDL 衍生。如需參考,請參閱 Apache 文件中的新增/取代資料欄table-name
REPLACE COLUMNS。
範例
在下列範例中,資料表 names_cities
是使用 LazySimpleSerDe 所建立的,並有三個名為 col1
、col2
和 col3
的資料欄。所有資料欄均為 string
類型。若要顯示資料表中的資料欄,下列命令會使用 SHOW COLUMNS 陳述式。
SHOW COLUMNS IN names_cities
查詢的結果:
col1 col2 col3
下列 ALTER TABLE REPLACE COLUMNS
命令將資料欄名稱取代為 first_name
、last_name
和 city
。基礎來源資料不受影響。
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
查詢。