Flink基礎(三十):FLINK-SQL語法(六)DDL(三)ALTER 語句


0 簡介

ALTER 語句用於修改一個已經在 Catalog 中注冊的表、視圖或函數定義。

Flink SQL 目前支持以下 ALTER 語句:

  • ALTER TABLE
  • ALTER DATABASE
  • ALTER FUNCTION

1 執行 ALTER 語句

可以使用 TableEnvironment 中的 executeSql() 方法執行 ALTER 語句,也可以在 SQL CLI 中執行 ALTER 語句。 若 ALTER 操作執行成功,executeSql() 方法返回 ‘OK’,否則會拋出異常。

以下的例子展示了如何在 TableEnvironment 和 SQL CLI 中執行一個 ALTER 語句。

val settings = EnvironmentSettings.newInstance()...
val tableEnv = TableEnvironment.create(settings)

// 注冊名為 “Orders” 的表
tableEnv.executeSql("CREATE TABLE Orders (`user` BIGINT, product STRING, amount INT) WITH (...)");

// 字符串數組: ["Orders"]
val tables = tableEnv.listTables()
// or tableEnv.executeSql("SHOW TABLES").print()

// 把 “Orders” 的表名改為 “NewOrders”
tableEnv.executeSql("ALTER TABLE Orders RENAME TO NewOrders;")

// 字符串數組:["NewOrders"]
val tables = tableEnv.listTables()
// or tableEnv.executeSql("SHOW TABLES").print()
Flink SQL> CREATE TABLE Orders (`user` BIGINT, product STRING, amount INT) WITH (...);
[INFO] Table has been created.

Flink SQL> SHOW TABLES;
Orders

Flink SQL> ALTER TABLE Orders RENAME TO NewOrders;
[INFO] Table has been removed.

Flink SQL> SHOW TABLES;
NewOrders

2 ALTER TABLE

  • 重命名表
ALTER TABLE [catalog_name.][db_name.]table_name RENAME TO new_table_name

把原有的表名更改為新的表名。

  • 設置或修改表屬性
ALTER TABLE [catalog_name.][db_name.]table_name SET (key1=val1, key2=val2, ...)

為指定的表設置一個或多個屬性。若個別屬性已經存在於表中,則使用新的值覆蓋舊的值。

3 ALTER DATABASE

ALTER DATABASE [catalog_name.]db_name SET (key1=val1, key2=val2, ...)

在數據庫中設置一個或多個屬性。若個別屬性已經在數據庫中設定,將會使用新值覆蓋舊值。

4 ALTER FUNCTION

ALTER [TEMPORARY|TEMPORARY SYSTEM] FUNCTION
  [IF EXISTS] [catalog_name.][db_name.]function_name
  AS identifier [LANGUAGE JAVA|SCALA|PYTHON]

修改一個有 catalog 和數據庫命名空間的 catalog function ,需要指定一個新的 identifier ,可指定 language tag 。若函數不存在,刪除會拋出異常。

如果 language tag 是 JAVA 或者 SCALA ,則 identifier 是 UDF 實現類的全限定名。關於 JAVA/SCALA UDF 的實現,請參考 自定義函數

如果 language tag 是 PYTHON , 則 identifier 是 UDF 對象的全限定名,例如 pyflink.table.tests.test_udf.add。關於 PYTHON UDF 的實現,請參考 Python UDFs

TEMPORARY

修改一個有 catalog 和數據庫命名空間的臨時 catalog function ,並覆蓋原有的 catalog function 。

TEMPORARY SYSTEM

修改一個沒有數據庫命名空間的臨時系統 catalog function ,並覆蓋系統內置的函數。

IF EXISTS

若函數不存在,則不進行任何操作。

LANGUAGE JAVA|SCALA|PYTHON

Language tag 用於指定 Flink runtime 如何執行這個函數。目前,只支持 JAVA,SCALA 和 PYTHON,且函數的默認語言為 JAVA。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM