Wait the light to fall

Alter 语句

焉知非鱼

ALTER Statements

ALTER 语句

ALTER 语句用于修改目录中注册的表/视图/函数定义。

Flink SQL 目前支持以下 ALTER 语句。

  • ALTER TABLE
  • ALTER DATABASE
  • ALTER FUNCTION

运行 ALTER 语句 #

ALTER 语句可以用 TableEnvironment 的 executeSql()方法执行,也可以在 SQL CLI 中执行。executeSql()方法在 ALTER 操作成功时返回 “OK”,否则将抛出一个异常。

下面的例子展示了如何在 TableEnvironment 和 SQL CLI 中运行 ALTER 语句。

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

// register a table named "Orders"
tableEnv.executeSql("CREATE TABLE Orders (`user` BIGINT, product STRING, amount INT) WITH (...)");

// a string array: ["Orders"]
val tables = tableEnv.listTables()
// or tableEnv.executeSql("SHOW TABLES").print()

// rename "Orders" to "NewOrders"
tableEnv.executeSql("ALTER TABLE Orders RENAME TO NewOrders;")

// a string array: ["NewOrders"]
val tables = tableEnv.listTables()
// or tableEnv.executeSql("SHOW TABLES").print()

ALTER TABLE #

  • Rename 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, ...)

设置指定表格中的一个或多个属性。如果某个属性已经在表中被设置,则用新的属性覆盖旧的值。

ALTER DATABASE #

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

在指定的数据库中设置一个或多个属性。如果某个属性已经在数据库中被设置,则用新的属性覆盖旧的值。

ALTER FUNCTION #

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

用新的标识符和可选的语言标签改变一个目录函数。如果一个函数在目录中不存在,就会抛出一个异常。

如果语言标签是 JAVA/SCALA,标识符是 UDF 的完整 classpath。关于 Java/Scala UDF 的实现,请参考 User-defined Functions 了解详情。

如果语言标签是 PYTHON,标识符是 UDF 的完全限定名,例如 pyflink.table.test.test_udf.add。关于 Python UDF 的实现,更多细节请参考 Python UDFs

TEMPORARY

改变具有目录和数据库命名空间的临时目录功能,并覆盖目录功能。

TEMPORARY SYSTEM

更改没有命名空间的临时系统函数,并覆盖内置函数。

IF EXISTS

如果函数不存在,就不会发生任何事情。

LANGUAGE JAVA|SCALA|PYTHON

语言标签,用于指导 flink 运行时如何执行函数。目前只支持 JAVA、SCALA 和 PYTHON,函数的默认语言是 JAVA。

原文链接: https://ci.apache.org/projects/flink/flink-docs-release-1.11/dev/table/sql/alter.html