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