zoukankan      html  css  js  c++  java
  • 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。

    本文来自博客园,作者:秋华,转载请注明原文链接:https://www.cnblogs.com/qiu-hua/p/14053311.html

  • 相关阅读:
    spring多个context:property-placeholder不生效问题
    JAVA中自定义properties文件介绍
    spring.jar是包含有完整发布的单个jar 包,spring.jar中包含除了spring-mock.jar里所包含的内容外其它所有jar包的内容,因为只有在开发环境下才会用到 spring-mock.jar来进行辅助测试,正式应用系统中是用不得这些类的。
    web.xml文件头声明各个版本参考
    Java 组件化(gradle)
    阿里开源框架-JarsLink-【JAVA的模块化开发框架】
    二gradle创建SSM项目——Hello word
    一gradle创建SSM项目——依赖包
    微信开发学习总结(二)——微信开发入门
    js函数声明的三种方式
  • 原文地址:https://www.cnblogs.com/qiu-hua/p/14053311.html
Copyright © 2011-2022 走看看