SHOW 语句

    SHOW CREATE 语句用于打印给定对象的创建 DDL 语句。当前的 SHOW CREATE 语句仅在打印给定表和视图的 DDL 语句时可用。

    目前 Flink SQL 支持下列 SHOW 语句:

    • SHOW CATALOGS
    • SHOW CURRENT CATALOG
    • SHOW DATABASES
    • SHOW CURRENT DATABASE
    • SHOW TABLES
    • SHOW CREATE TABLE
    • SHOW COLUMNS
    • SHOW VIEWS
    • SHOW CREATE VIEW
    • SHOW FUNCTIONS
    • SHOW MODULES
    • SHOW FULL MODULES
    • SHOW JARS

    Java

    可以使用 中的 executeSql() 方法执行 SHOW 语句。 若 SHOW 操作执行成功,executeSql() 方法返回所有对象,否则会抛出异常。

    以下的例子展示了如何在 TableEnvironment 中执行一个 SHOW 语句。

    Scala

    可以使用 TableEnvironment 中的 executeSql() 方法执行 SHOW 语句。 若 SHOW 操作执行成功,executeSql() 方法返回所有对象,否则会抛出异常。

    以下的例子展示了如何在 TableEnvironment 中执行一个 SHOW 语句。

    Python

    可以使用 TableEnvironment 中的 execute_sql() 方法执行 SHOW 语句。 若 SHOW 操作执行成功,execute_sql() 方法返回所有对象,否则会抛出异常。

    以下的例子展示了如何在 TableEnvironment 中执行一个 SHOW 语句。

    SQL CLI

    可以在 SQL CLI 中执行 SHOW 语句。

    Java

    Scala

    1. val env = StreamExecutionEnvironment.getExecutionEnvironment()
    2. val tEnv = StreamTableEnvironment.create(env)
    3. // show catalogs
    4. tEnv.executeSql("SHOW CATALOGS").print()
    5. // +-----------------+
    6. // | catalog name |
    7. // +-----------------+
    8. // | default_catalog |
    9. // +-----------------+
    10. // show databases
    11. tEnv.executeSql("SHOW DATABASES").print()
    12. // +------------------+
    13. // | database name |
    14. // +------------------+
    15. // | default_database |
    16. // +------------------+
    17. // create a table
    18. tEnv.executeSql("CREATE TABLE my_table (...) WITH (...)")
    19. // show tables
    20. tEnv.executeSql("SHOW TABLES").print()
    21. // +------------+
    22. // | table name |
    23. // +------------+
    24. // | my_table |
    25. // +------------+
    26. // show create table
    27. tEnv.executeSql("SHOW CREATE TABLE my_table").print()
    28. // CREATE TABLE `default_catalog`.`default_db`.`my_table` (
    29. // ...
    30. // ) WITH (
    31. // ...
    32. // )
    33. // show columns
    34. tEnv.executeSql("SHOW COLUMNS FROM my_table LIKE '%f%'").print()
    35. // +--------+-------+------+-----+--------+-----------+
    36. // | name | type | null | key | extras | watermark |
    37. // +--------+-------+------+-----+--------+-----------+
    38. // | field2 | BYTES | true | | | |
    39. // +--------+-------+------+-----+--------+-----------+
    40. // create a view
    41. tEnv.executeSql("CREATE VIEW my_view AS SELECT * FROM my_table")
    42. // show views
    43. tEnv.executeSql("SHOW VIEWS").print()
    44. // +-----------+
    45. // | view name |
    46. // +-----------+
    47. // | my_view |
    48. // +-----------+
    49. // show create view
    50. tEnv.executeSql("SHOW CREATE VIEW my_view").print();
    51. // CREATE VIEW `default_catalog`.`default_db`.`my_view`(`field1`, `field2`, ...) as
    52. // SELECT *
    53. // FROM `default_catalog`.`default_database`.`my_table`
    54. // show functions
    55. tEnv.executeSql("SHOW FUNCTIONS").print()
    56. // +---------------+
    57. // | function name |
    58. // +---------------+
    59. // | mod |
    60. // | sha256 |
    61. // | ... |
    62. // +---------------+
    63. // create a user defined function
    64. tEnv.executeSql("CREATE FUNCTION f1 AS ...")
    65. // show user defined functions
    66. tEnv.executeSql("SHOW USER FUNCTIONS").print()
    67. // +---------------+
    68. // | function name |
    69. // +---------------+
    70. // | f1 |
    71. // | ... |
    72. // +---------------+
    73. // show modules
    74. tEnv.executeSql("SHOW MODULES").print()
    75. // +-------------+
    76. // | module name |
    77. // +-------------+
    78. // | core |
    79. // +-------------+
    80. // show full modules
    81. tEnv.executeSql("SHOW FULL MODULES").print()
    82. // +-------------+-------+
    83. // | module name | used |
    84. // +-------------+-------+
    85. // | core | true |
    86. // | hive | false |
    87. // +-------------+-------+

    Python

    1. table_env = StreamTableEnvironment.create(...)
    2. # show catalogs
    3. table_env.execute_sql("SHOW CATALOGS").print()
    4. # | catalog name |
    5. # +-----------------+
    6. # | default_catalog |
    7. # +-----------------+
    8. # show databases
    9. table_env.execute_sql("SHOW DATABASES").print()
    10. # +------------------+
    11. # | database name |
    12. # +------------------+
    13. # | default_database |
    14. # +------------------+
    15. table_env.execute_sql("CREATE TABLE my_table (...) WITH (...)")
    16. # show tables
    17. table_env.execute_sql("SHOW TABLES").print()
    18. # +------------+
    19. # | table name |
    20. # +------------+
    21. # | my_table |
    22. # +------------+
    23. # show create table
    24. table_env.executeSql("SHOW CREATE TABLE my_table").print()
    25. # CREATE TABLE `default_catalog`.`default_db`.`my_table` (
    26. # ...
    27. # ) WITH (
    28. # ...
    29. # )
    30. # show columns
    31. table_env.execute_sql("SHOW COLUMNS FROM my_table LIKE '%f%'").print()
    32. # +--------+-------+------+-----+--------+-----------+
    33. # | name | type | null | key | extras | watermark |
    34. # +--------+-------+------+-----+--------+-----------+
    35. # | field2 | BYTES | true | | | |
    36. # +--------+-------+------+-----+--------+-----------+
    37. # create a view
    38. table_env.execute_sql("CREATE VIEW my_view AS SELECT * FROM my_table")
    39. # show views
    40. table_env.execute_sql("SHOW VIEWS").print()
    41. # +-----------+
    42. # | view name |
    43. # +-----------+
    44. # | my_view |
    45. # +-----------+
    46. # show create view
    47. table_env.execute_sql("SHOW CREATE VIEW my_view").print()
    48. # CREATE VIEW `default_catalog`.`default_db`.`my_view`(`field1`, `field2`, ...) as
    49. # SELECT *
    50. # FROM `default_catalog`.`default_database`.`my_table`
    51. # show functions
    52. table_env.execute_sql("SHOW FUNCTIONS").print()
    53. # +---------------+
    54. # | function name |
    55. # +---------------+
    56. # | mod |
    57. # | sha256 |
    58. # | ... |
    59. # +---------------+
    60. # create a user defined function
    61. table_env.execute_sql("CREATE FUNCTION f1 AS ...")
    62. # show user defined functions
    63. table_env.execute_sql("SHOW USER FUNCTIONS").print()
    64. # +---------------+
    65. # | function name |
    66. # +---------------+
    67. # | f1 |
    68. # | ... |
    69. # +---------------+
    70. # show modules
    71. table_env.execute_sql("SHOW MODULES").print()
    72. # +-------------+
    73. # | module name |
    74. # +-------------+
    75. # | core |
    76. # +-------------+
    77. # show full modules
    78. table_env.execute_sql("SHOW FULL MODULES").print()
    79. # +-------------+-------+
    80. # | module name | used |
    81. # +-------------+-------+
    82. # | core | true |
    83. # | hive | false |
    84. # +-------------+-------+

    SQL CLI

    1. Flink SQL> SHOW CATALOGS;
    2. default_catalog
    3. Flink SQL> SHOW DATABASES;
    4. default_database
    5. Flink SQL> CREATE TABLE my_table (...) WITH (...);
    6. [INFO] Table has been created.
    7. Flink SQL> SHOW TABLES;
    8. my_table
    9. Flink SQL> SHOW CREATE TABLE my_table;
    10. CREATE TABLE `default_catalog`.`default_db`.`my_table` (
    11. ...
    12. ) WITH (
    13. ...
    14. )
    15. Flink SQL> SHOW COLUMNS from MyUserTable LIKE '%f%';
    16. +--------+-------+------+-----+--------+-----------+
    17. | name | type | null | key | extras | watermark |
    18. +--------+-------+------+-----+--------+-----------+
    19. | field2 | BYTES | true | | | |
    20. +--------+-------+------+-----+--------+-----------+
    21. 1 row in set
    22. Flink SQL> CREATE VIEW my_view AS SELECT * from my_table;
    23. [INFO] View has been created.
    24. Flink SQL> SHOW VIEWS;
    25. my_view
    26. Flink SQL> SHOW CREATE VIEW my_view;
    27. CREATE VIEW `default_catalog`.`default_db`.`my_view`(`field1`, `field2`, ...) as
    28. SELECT *
    29. Flink SQL> SHOW FUNCTIONS;
    30. mod
    31. sha256
    32. ...
    33. Flink SQL> CREATE FUNCTION f1 AS ...;
    34. [INFO] Function has been created.
    35. Flink SQL> SHOW USER FUNCTIONS;
    36. ...
    37. Flink SQL> SHOW MODULES;
    38. +-------------+
    39. | module name |
    40. +-------------+
    41. | core |
    42. +-------------+
    43. 1 row in set
    44. Flink SQL> SHOW FULL MODULES;
    45. +-------------+------+
    46. | module name | used |
    47. +-------------+------+
    48. | core | true |
    49. +-------------+------+
    50. 1 row in set
    51. Flink SQL> SHOW JARS;
    52. /path/to/addedJar.jar

    SHOW CATALOGS

    1. SHOW CATALOGS

    展示所有的 catalog。

    SHOW CURRENT CATALOG

    1. SHOW CURRENT CATALOG

    显示当前正在使用的 catalog。

    SHOW DATABASES

    1. SHOW DATABASES

    展示当前 catalog 中所有的 database。

    1. SHOW CURRENT DATABASE

    显示当前正在使用的 database。

    SHOW TABLES

    展示指定库的所有表,如果没有指定库则展示当前库的所有表。另外返回的结果能被一个可选的匹配字符串过滤。

    LIKE 根据可选的 LIKE 语句展示给定库中与 <sql_like_pattern> 是否模糊相似的所有表。

    LIKE 子句中 sql 正则式的语法与 MySQL 方言中的语法相同。

    • % 匹配任意数量的字符, 也包括0数量字符, \% 匹配一个 % 字符.
    • _ 只匹配一个字符, \_ 匹配一个 _ 字符.

    假定在 catalog1db1 库有如下表:

    • person
    • dim

    在会话的当前库下有如下表:

    • fights
    • 显示指定库的所有表。

    1. show tables from db1;
    2. -- show tables from catalog1.db1;
    3. -- show tables in db1;
    4. -- show tables in catalog1.db1;
    5. +------------+
    6. | table name |
    7. +------------+
    8. | dim |
    9. | person |
    10. +------------+
    11. 2 rows in set
    • 显示指定库中相似于指定 SQL 正则式的所有表。
    1. show tables from db1 like '%n';
    2. -- show tables from catalog1.db1 like '%n';
    3. -- show tables in db1 like '%n';
    4. -- show tables in catalog1.db1 like '%n';
    5. +------------+
    6. | table name |
    7. +------------+
    8. | person |
    9. +------------+
    10. 1 row in set
    • 显示指定库中不相似于指定 SQL 正则式的所有表。
    1. show tables from db1 not like '%n';
    2. -- show tables from catalog1.db1 not like '%n';
    3. -- show tables in db1 not like '%n';
    4. -- show tables in catalog1.db1 not like '%n';
    5. +------------+
    6. | table name |
    7. +------------+
    8. | dim |
    9. +------------+
    10. 1 row in set
    • 显示当前库中的所有表。
    1. show tables;
    2. +------------+
    3. | table name |
    4. +------------+
    5. | items |
    6. | orders |
    7. +------------+
    8. 2 rows in set

    SHOW CREATE TABLE

    1. SHOW CREATE TABLE [catalog_name.][db_name.]table_name

    展示创建指定表的 create 语句。

    Attention 目前 SHOW CREATE TABLE 只支持通过 Flink SQL DDL 创建的表。

    SHOW COLUMNS

    1. SHOW COLUMNS ( FROM | IN ) [[catalog_name.]database.]<table_name> [ [NOT] LIKE <sql_like_pattern>]

    展示给定表的所有列。

    LIKE 根据可选的 LIKE 语句展示给定表中与 <sql_like_pattern> 是否模糊相似的所有列。

    LIKE 子句中 sql 正则式的语法与 MySQL 方言中的语法相同。

    SHOW COLUMNS 示例

    假定在 catalog1 catalog 中的 database1 数据库中有名为 orders 的表,其结构如下所示:

    1. +---------+-----------------------------+-------+-----------+---------------+----------------------------+
    2. | name | type | null | key | extras | watermark |
    3. +---------+-----------------------------+-------+-----------+---------------+----------------------------+
    4. | user | BIGINT | false | PRI(user) | | |
    5. | product | VARCHAR(32) | true | | | |
    6. | amount | INT | true | | | |
    7. | ts | TIMESTAMP(3) *ROWTIME* | true | | | `ts` - INTERVAL '1' SECOND |
    8. | ptime | TIMESTAMP_LTZ(3) *PROCTIME* | false | | AS PROCTIME() | |
    9. +---------+-----------------------------+-------+-----------+---------------+----------------------------+
    • 显示指定表中的所有列。
    • 显示指定表中相似于指定 SQL 正则式的所有列。
    1. show columns from orders like '%r';
    2. -- show columns from database1.orders like '%r';
    3. -- show columns from catalog1.database1.orders like '%r';
    4. -- show columns in orders like '%r';
    5. -- show columns in database1.orders like '%r';
    6. -- show columns in catalog1.database1.orders like '%r';
    7. +------+--------+-------+-----------+--------+-----------+
    8. | name | type | null | key | extras | watermark |
    9. +------+--------+-------+-----------+--------+-----------+
    10. | user | BIGINT | false | PRI(user) | | |
    11. +------+--------+-------+-----------+--------+-----------+
    12. 1 row in set
    • 显示指定表中不相似于指定 SQL 正则式的所有列。
    1. show columns from orders not like '%_r';
    2. -- show columns from database1.orders not like '%_r';
    3. -- show columns from catalog1.database1.orders not like '%_r';
    4. -- show columns in orders not like '%_r';
    5. -- show columns in database1.orders not like '%_r';
    6. -- show columns in catalog1.database1.orders not like '%_r';
    7. +---------+-----------------------------+-------+-----+---------------+----------------------------+
    8. | name | type | null | key | extras | watermark |
    9. +---------+-----------------------------+-------+-----+---------------+----------------------------+
    10. | product | VARCHAR(32) | true | | | |
    11. | amount | INT | true | | | |
    12. | ts | TIMESTAMP(3) *ROWTIME* | true | | | `ts` - INTERVAL '1' SECOND |
    13. | ptime | TIMESTAMP_LTZ(3) *PROCTIME* | false | | AS PROCTIME() | |
    14. +---------+-----------------------------+-------+-----+---------------+----------------------------+
    15. 4 rows in set
    1. SHOW VIEWS

    展示当前 catalog 和当前 database 中所有的视图。

    SHOW CREATE VIEW

    1. SHOW CREATE VIEW [catalog_name.][db_name.]view_name

    展示创建指定视图的 create 语句。

    SHOW FUNCTIONS

    1. SHOW [USER] FUNCTIONS

    展示当前 catalog 和当前 database 中所有的 function,包括:系统 function 和用户定义的 function。

    USER 仅仅展示当前 catalog 和当前 database 中用户定义的 function。

    SHOW MODULES

      展示当前环境激活的所有 module。

      FULL 展示当前环境加载的所有 module 及激活状态。

      Attention 当前 SHOW JARS 命令只能在 中使用。