SHOW 语句

SHOW 语句 #

SHOW 语句用于列出其相应父对象中的对象,例如 catalog、database、table 和 view、column、function 和 module。有关详细信息和其他选项,请参见各个命令。

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 PARTITIONS
  • SHOW PROCEDURES
  • SHOW VIEWS
  • SHOW CREATE VIEW
  • SHOW FUNCTIONS
  • SHOW MODULES
  • SHOW FULL MODULES
  • SHOW JARS
  • SHOW JOBS

执行 SHOW 语句 #

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

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

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

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

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

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

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

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

StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment(); StreamTableEnvironment tEnv = StreamTableEnvironment.create(env);  // show catalogs tEnv.executeSql("SHOW CATALOGS").print(); // +-----------------+ // | catalog name | // +-----------------+ // | default_catalog | // +-----------------+  // show current catalog tEnv.executeSql("SHOW CURRENT CATALOG").print(); // +----------------------+ // | current catalog name | // +----------------------+ // | default_catalog | // +----------------------+  // show databases tEnv.executeSql("SHOW DATABASES").print(); // +------------------+ // | database name | // +------------------+ // | default_database | // +------------------+  // show current database tEnv.executeSql("SHOW CURRENT DATABASE").print(); // +-----------------------+ // | current database name | // +-----------------------+ // | default_database | // +-----------------------+  // create a table tEnv.executeSql("CREATE TABLE my_table (...) WITH (...)"); // show tables tEnv.executeSql("SHOW TABLES").print(); // +------------+ // | table name | // +------------+ // | my_table | // +------------+  // show create table tEnv.executeSql("SHOW CREATE TABLE my_table").print(); // CREATE TABLE `default_catalog`.`default_db`.`my_table` ( // ... // ) WITH ( // ... // )  // show columns tEnv.executeSql("SHOW COLUMNS FROM my_table LIKE '%f%'").print(); // +--------+-------+------+-----+--------+-----------+ // | name | type | null | key | extras | watermark | // +--------+-------+------+-----+--------+-----------+ // | field2 | BYTES | true | | | | // +--------+-------+------+-----+--------+-----------+   // create a view tEnv.executeSql("CREATE VIEW my_view AS SELECT * FROM my_table"); // show views tEnv.executeSql("SHOW VIEWS").print(); // +-----------+ // | view name | // +-----------+ // | my_view | // +-----------+  // show create view tEnv.executeSql("SHOW CREATE VIEW my_view").print(); // CREATE VIEW `default_catalog`.`default_db`.`my_view`(`field1`, `field2`, ...) as // SELECT * // FROM `default_catalog`.`default_database`.`my_table`  // show functions tEnv.executeSql("SHOW FUNCTIONS").print(); // +---------------+ // | function name | // +---------------+ // | mod | // | sha256 | // | ... | // +---------------+  // create a user defined function tEnv.executeSql("CREATE FUNCTION f1 AS ..."); // show user defined functions tEnv.executeSql("SHOW USER FUNCTIONS").print(); // +---------------+ // | function name | // +---------------+ // | f1 | // | ... | // +---------------+  // show modules tEnv.executeSql("SHOW MODULES").print(); // +-------------+ // | module name | // +-------------+ // | core | // +-------------+  // show full modules tEnv.executeSql("SHOW FULL MODULES").print(); // +-------------+-------+ // | module name | used | // +-------------+-------+ // | core | true | // | hive | false | // +-------------+-------+ 
val env = StreamExecutionEnvironment.getExecutionEnvironment() val tEnv = StreamTableEnvironment.create(env)  // show catalogs tEnv.executeSql("SHOW CATALOGS").print() // +-----------------+ // | catalog name | // +-----------------+ // | default_catalog | // +-----------------+  // show databases tEnv.executeSql("SHOW DATABASES").print() // +------------------+ // | database name | // +------------------+ // | default_database | // +------------------+  // create a table tEnv.executeSql("CREATE TABLE my_table (...) WITH (...)") // show tables tEnv.executeSql("SHOW TABLES").print() // +------------+ // | table name | // +------------+ // | my_table | // +------------+  // show create table tEnv.executeSql("SHOW CREATE TABLE my_table").print() // CREATE TABLE `default_catalog`.`default_db`.`my_table` ( // ... // ) WITH ( // ... // )  // show columns tEnv.executeSql("SHOW COLUMNS FROM my_table LIKE '%f%'").print() // +--------+-------+------+-----+--------+-----------+ // | name | type | null | key | extras | watermark | // +--------+-------+------+-----+--------+-----------+ // | field2 | BYTES | true | | | | // +--------+-------+------+-----+--------+-----------+  // create a view tEnv.executeSql("CREATE VIEW my_view AS SELECT * FROM my_table") // show views tEnv.executeSql("SHOW VIEWS").print() // +-----------+ // | view name | // +-----------+ // | my_view | // +-----------+  // show create view tEnv.executeSql("SHOW CREATE VIEW my_view").print(); // CREATE VIEW `default_catalog`.`default_db`.`my_view`(`field1`, `field2`, ...) as // SELECT * // FROM `default_catalog`.`default_database`.`my_table`  // show functions tEnv.executeSql("SHOW FUNCTIONS").print() // +---------------+ // | function name | // +---------------+ // | mod | // | sha256 | // | ... | // +---------------+  // create a user defined function tEnv.executeSql("CREATE FUNCTION f1 AS ...") // show user defined functions tEnv.executeSql("SHOW USER FUNCTIONS").print() // +---------------+ // | function name | // +---------------+ // | f1 | // | ... | // +---------------+  // show modules tEnv.executeSql("SHOW MODULES").print() // +-------------+ // | module name | // +-------------+ // | core | // +-------------+  // show full modules tEnv.executeSql("SHOW FULL MODULES").print() // +-------------+-------+ // | module name | used | // +-------------+-------+ // | core | true | // | hive | false | // +-------------+-------+ 
table_env = StreamTableEnvironment.create(...)  # show catalogs table_env.execute_sql("SHOW CATALOGS").print() # +-----------------+ # | catalog name | # +-----------------+ # | default_catalog | # +-----------------+  # show databases table_env.execute_sql("SHOW DATABASES").print() # +------------------+ # | database name | # +------------------+ # | default_database | # +------------------+  # create a table table_env.execute_sql("CREATE TABLE my_table (...) WITH (...)") # show tables table_env.execute_sql("SHOW TABLES").print() # +------------+ # | table name | # +------------+ # | my_table | # +------------+ # show create table table_env.executeSql("SHOW CREATE TABLE my_table").print() # CREATE TABLE `default_catalog`.`default_db`.`my_table` ( # ... # ) WITH ( # ... # )  # show columns table_env.execute_sql("SHOW COLUMNS FROM my_table LIKE '%f%'").print() # +--------+-------+------+-----+--------+-----------+ # | name | type | null | key | extras | watermark | # +--------+-------+------+-----+--------+-----------+ # | field2 | BYTES | true | | | | # +--------+-------+------+-----+--------+-----------+  # create a view table_env.execute_sql("CREATE VIEW my_view AS SELECT * FROM my_table") # show views table_env.execute_sql("SHOW VIEWS").print() # +-----------+ # | view name | # +-----------+ # | my_view | # +-----------+  # show create view table_env.execute_sql("SHOW CREATE VIEW my_view").print() # CREATE VIEW `default_catalog`.`default_db`.`my_view`(`field1`, `field2`, ...) as # SELECT * # FROM `default_catalog`.`default_database`.`my_table`  # show functions table_env.execute_sql("SHOW FUNCTIONS").print() # +---------------+ # | function name | # +---------------+ # | mod | # | sha256 | # | ... | # +---------------+  # create a user defined function table_env.execute_sql("CREATE FUNCTION f1 AS ...") # show user defined functions table_env.execute_sql("SHOW USER FUNCTIONS").print() # +---------------+ # | function name | # +---------------+ # | f1 | # | ... | # +---------------+  # show modules table_env.execute_sql("SHOW MODULES").print() # +-------------+ # | module name | # +-------------+ # | core | # +-------------+  # show full modules table_env.execute_sql("SHOW FULL MODULES").print() # +-------------+-------+ # | module name | used | # +-------------+-------+ # | core | true | # | hive | false | # +-------------+-------+ 
 Flink SQL> SHOW CATALOGS; default_catalog  Flink SQL> SHOW DATABASES; default_database  Flink SQL> CREATE TABLE my_table (...) WITH (...); [INFO] Table has been created.  Flink SQL> SHOW TABLES; my_table  Flink SQL> SHOW CREATE TABLE my_table; CREATE TABLE `default_catalog`.`default_db`.`my_table` (  ... ) WITH (  ... )   Flink SQL> SHOW COLUMNS from MyUserTable LIKE '%f%'; +--------+-------+------+-----+--------+-----------+ | name | type | null | key | extras | watermark | +--------+-------+------+-----+--------+-----------+ | field2 | BYTES | true | | | | +--------+-------+------+-----+--------+-----------+ 1 row in set   Flink SQL> CREATE VIEW my_view AS SELECT * from my_table; [INFO] View has been created.  Flink SQL> SHOW VIEWS; my_view  Flink SQL> SHOW CREATE VIEW my_view; CREATE VIEW `default_catalog`.`default_db`.`my_view`(`field1`, `field2`, ...) as SELECT * FROM `default_catalog`.`default_database`.`my_table`  Flink SQL> SHOW FUNCTIONS; mod sha256 ...  Flink SQL> CREATE FUNCTION f1 AS ...; [INFO] Function has been created.  Flink SQL> SHOW USER FUNCTIONS; f1 ...  Flink SQL> SHOW MODULES; +-------------+ | module name | +-------------+ | core | +-------------+ 1 row in set   Flink SQL> SHOW FULL MODULES; +-------------+------+ | module name | used | +-------------+------+ | core | true | +-------------+------+ 1 row in set   Flink SQL> SHOW JARS; /path/to/addedJar.jar 

Back to top

SHOW CATALOGS #

SHOW CATALOGS 

展示所有的 catalog。

SHOW CURRENT CATALOG #

SHOW CURRENT CATALOG 

显示当前正在使用的 catalog。

SHOW DATABASES #

SHOW DATABASES [ ( FROM | IN ) catalog_name] [ [NOT] (LIKE | ILIKE) <sql_like_pattern> ] 

展示当前 catalog 中所有的 database。

SHOW CURRENT DATABASE #

SHOW CURRENT DATABASE 

显示当前正在使用的 database。

SHOW TABLES #

SHOW TABLES [ ( FROM | IN ) [catalog_name.]database_name ] [ [NOT] LIKE <sql_like_pattern> ] 

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

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

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

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

SHOW TABLES 示例 #

假定在 catalog1db1 库有如下表:

  • person
  • dim

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

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

SHOW CREATE TABLE #

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

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

该语句的输出内容包括表名、列名、数据类型、约束、注释和配置。

当您需要了解现有表的结构、配置和约束,或在另一个数据库中重新创建表时,这个语句非常有用。

假设表 orders 是按如下方式创建的:

CREATE TABLE orders (  order_id BIGINT NOT NULL comment 'this is the primary key, named ''order_id''.',  product VARCHAR(32),  amount INT,  ts TIMESTAMP(3) comment 'notice: watermark, named ''ts''.',  ptime AS PROCTIME() comment 'notice: computed column, named ''ptime''.',  WATERMARK FOR ts AS ts - INTERVAL '1' SECOND,  CONSTRAINT `PK_order_id` PRIMARY KEY (order_id) NOT ENFORCED ) WITH (  'connector' = 'datagen' ); 

展示表创建语句。

show create table orders; +---------------------------------------------------------------------------------------------+ | result | +---------------------------------------------------------------------------------------------+ | CREATE TABLE `default_catalog`.`default_database`.`orders` (  `order_id` BIGINT NOT NULL COMMENT 'this is the primary key, named ''order_id''.',  `product` VARCHAR(32),  `amount` INT,  `ts` TIMESTAMP(3) COMMENT 'notice: watermark, named ''ts''.',  `ptime` AS PROCTIME() COMMENT 'notice: computed column, named ''ptime''.',  WATERMARK FOR `ts` AS `ts` - INTERVAL '1' SECOND,  CONSTRAINT `PK_order_id` PRIMARY KEY (`order_id`) NOT ENFORCED ) WITH (  'connector' = 'datagen' )  | +---------------------------------------------------------------------------------------------+ 1 row in set 

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

SHOW COLUMNS #

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 的表,其结构如下所示:

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

SHOW PARTITIONS #

SHOW PARTITIONS [[catalog_name.]database.]<table_name> [ PARTITION <partition_spec>]  <partition_spec>:  (key1=val1, key2=val2, ...) 

展示给定分区表的所有分区。

PARTITION 根据可选的 PARTITION 语句展示给定分区表中在指定的 <partition_spec> 分区下的所有分区。

SHOW PARTITIONS 示例 #

假定在 catalog1 catalog 中的 database1 数据库中有名为 table1 的分区表,其包含的所有分区如下所示:

+---------+-----------------------------+ | id | date | +---------+-----------------------------+ | 1001 | 2020-01-01 | | 1002 | 2020-01-01 | | 1002 | 2020-01-02 | +---------+-----------------------------+ 
  • 显示指定分区表中的所有分区。
show partitions table1; -- show partitions database1.table1; -- show partitions catalog1.database1.table1; +---------+-----------------------------+ | id | date | +---------+-----------------------------+ | 1001 | 2020-01-01 | | 1002 | 2020-01-01 | | 1002 | 2020-01-02 | +---------+-----------------------------+ 3 rows in set 
  • 显示指定分区表在指定分区下的所有分区。
show partitions table1 partition (id=1002); -- show partitions database1.table1 partition (id=1002); -- show partitions catalog1.database1.table1 partition (id=1002); +---------+-----------------------------+ | id | date | +---------+-----------------------------+ | 1002 | 2020-01-01 | | 1002 | 2020-01-02 | +---------+-----------------------------+ 2 rows in set 

SHOW PROCEDURES #

SHOW PROCEDURES [ ( FROM | IN ) [catalog_name.]database_name ] [ [NOT] (LIKE | ILIKE) <sql_like_pattern> ] 

展示指定 catalog 和 database 下的所有 procedure。 如果没有指定 catalog 和 database,则将使用当前 catalog 和 当前 database。另外可以用 <sql_like_pattern> 来过滤要返回的 procedure。

LIKE 根据可选的 LIKE 语句与 <sql_like_pattern> 是否模糊匹配的所有 procedure。

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

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

ILIKE 它的行为和 LIKE 相同,只是对于大小写是不敏感的。

SHOW VIEWS #

SHOW VIEWS 

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

SHOW CREATE VIEW #

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

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

SHOW FUNCTIONS #

SHOW [USER] FUNCTIONS [ ( FROM | IN ) [catalog_name.]database_name ] [ [NOT] (LIKE | ILIKE) <sql_like_pattern> ] 

展示指定 catalog 和 database 下的所有 function,包括:系统 function 和用户定义的 function。 如果没有指定 catalog 和 database,则将使用当前 catalog 和 当前 database。另外可以用 <sql_like_pattern> 来过滤要返回的 function。

USER 仅展示用户定义的 function, 另外可以用 <sql_like_pattern> 来过滤要返回的 function。

LIKE 根据可选的 LIKE 语句与 <sql_like_pattern> 是否模糊匹配的所有 function。

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

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

ILIKE 它的行为和 LIKE 相同,只是对于大小写是不敏感的。

SHOW MODULES #

SHOW [FULL] MODULES 

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

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

SHOW JARS #

SHOW JARS 

展示所有通过 ADD JAR 语句加入到 session classloader 中的 jar。

Attention 当前 SHOW JARS 命令只能在 SQL CLI 或者 SQL Gateway 中使用.

SHOW JOBS #

SHOW JOBS 

展示集群中所有作业。

Attention 当前 SHOW JOBS 命令只能在 SQL CLI 或者 SQL Gateway 中使用.

Back to top