Hive|Spark 查看表的各种信息

SQL Syntax - Auxiliary Statements:SQL 语法之辅助语句

持续更新…

sql-ref-syntax-aux-show-columns

SHOW COLUMNS - 查看字段信息

查看指定表的所有字段列表,如果表不存在,则会抛出异常.

使用语法

-- 使用语法
SHOW COLUMNS table_identifier [ database ]

使用示例

-- Create `customer` table in `salesdb` database;
USE salesdb;
CREATE TABLE customer(
    cust_cd INT,
    name VARCHAR(100),
    cust_addr STRING);
-- List the columns of `customer` table in current database.
SHOW COLUMNS IN customer;
+---------+
| col_name|
+---------+
|  cust_cd|
|     name|
|cust_addr|
+---------+

-- List the columns of `customer` table in `salesdb` database.
SHOW COLUMNS IN salesdb.customer;
+---------+
| col_name|
+---------+
|  cust_cd|
|     name|
|cust_addr|
+---------+

-- List the columns of `customer` table in `salesdb` database
SHOW COLUMNS IN customer IN salesdb;
+---------+
| col_name|
+---------+
|  cust_cd|
|     name|
|cust_addr|
+---------+

在这里插入图片描述

SHOW CREATE TABLE - 查看建表语句

SHOW CREATE TABLE 返回用于创建给定表或视图的 CREATE TABLE 语句或 CREATE VIEW 语句,在不存在的表或临时视图上 SHOW CREATE TABLE 会引发异常

使用语法

SHOW CREATE TABLE table_identifier [ AS SERDE ]

使用示例

CREATE TABLE test (c INT) ROW FORMAT DELIMITED FIELDS TERMINATED BY ','
    STORED AS TEXTFILE
    TBLPROPERTIES ('prop1' = 'value1', 'prop2' = 'value2');
-- 返回简洁的建表语句
SHOW CREATE TABLE test;

在这里插入图片描述

-- 返回携带序列化信息的建表语句
-- HIVE目前不支持(默认返回携带的序列化信息),该语法位SPARK语法
SHOW CREATE TABLE test AS SERDE;

在这里插入图片描述

SHOW DATABASES - 查看数据库列表

列出与可选提供的正则表达式模式匹配的数据库,如果未提供模式,则该命令列出系统中的所有数据库

注意,SCHEMAS 和 DATABASES 的用法是可以互换的,并且含义相同

使用语法

SHOW { DATABASES | SCHEMAS } [ LIKE regex_pattern ]

使用示例

-- 未给出模式,查询所有的数据库
SHOW DATABASES;

在这里插入图片描述

-- 等同于 SHOW DATABASES;
SHOW SCHEMAS;

在这里插入图片描述

-- 通过模糊匹配查询数据库列表
-- 使用场景:如果数据库列表很多,通过该语法可以匹配部分数据库
SHOW DATABASES LIKE 'pay*';
SHOW DATABASES LIKE '*ay*';

在这里插入图片描述

SHOW FUNCTIONS - 查看函数列表

应用可选的正则表达式模式后返回函数列表,鉴于 Spark 支持的函数数量非常多,该语句结合 describe function 可以快速找到该函数并了解其用法

注意,LIKE 子句是可选的,仅支持与其他系统兼容

使用语法

SHOW [ function_kind ] FUNCTIONS [ { FROM | IN } database_name ] [ LIKE regex_pattern ]

参数介绍

-- function_kind(函数种类)
指定要搜索的函数的名称空间,有效的名称空间有:
1. USER - 在用户定义的函数中查找函数.
2. SYSTEM - 在系统的函数中查找函数.
3. ALL - 在用户系统的函数中查找函数.

-- { FROM | IN } database_name
指定列出函数的数据库名称

-- regex_pattern
指定用于过滤语句结果的正则表达式模式
1. 支持 *| 字符,同时正则表达式
2. * 单独匹配 0 个或多个字符和 | 用于分隔多个不同的正则表达式,其中任何一个都可以匹配
3. 会将输入的前后空格去除,且匹配时不区分大小写

使用示例

-- 在系统和用户自定义的函数中查找 `trim` 函数
SHOW FUNCTIONS trim;
+--------+
|function|
+--------+
|    trim|
+--------+
-- 在系统函数中查找 `concat` 函数
SHOW SYSTEM FUNCTIONS concat;
+--------+
|function|
+--------+
|  concat|
+--------+
-- 在 `salesdb` 库中查找系统函数 `max`
SHOW SYSTEM FUNCTIONS FROM salesdb LIKE 'max';
+--------+
|function|
+--------+
|     max|
+--------+
-- 获取以 `t` 开头的函数列表
SHOW FUNCTIONS LIKE 't*';

在这里插入图片描述

-- 获取以 `yea` 开头或者 `windo` 开头的函数列表
SHOW FUNCTIONS LIKE 'yea*|windo*';

在这里插入图片描述

-- 通过正则表达式获取函数列表
-- 该正则的含义为:函数名称只有四个字符,且都为字母
SHOW FUNCTIONS LIKE 't[a-z][a-z][a-z]';
+--------+
|function|
+--------+
|    tanh|
|    trim|
+--------+

SHOW PARTITIONS - 获取分区列表

SHOW PARTITIONS 语句用于列出表的分区,可以指定可选的分区规范以返回与提供的分区规范匹配的分区

使用语法

SHOW PARTITIONS table_identifier [ partition_spec ]

使用示例

-- 创建表和分区
CREATE TABLE customer(id INT, name STRING) PARTITIONED BY (state STRING, city STRING);
INSERT INTO customer PARTITION (state = 'CA', city = 'Fremont') VALUES (100, 'John');
INSERT INTO customer PARTITION (state = 'CA', city = 'San Jose') VALUES (200, 'Marry');
INSERT INTO customer PARTITION (state = 'AZ', city = 'Peoria') VALUES (300, 'Daniel');
-- 查看 customer 表的所有分区
SHOW PARTITIONS customer;

在这里插入图片描述

-- 查看 customer 表的指定分区
SHOW PARTITIONS customer PARTITION (state = 'CA', city = 'Fremont');

在这里插入图片描述

SHOW PARTITIONS customer PARTITION (state = 'CA');
SHOW PARTITIONS customer PARTITION (city =  'San Jose');

在这里插入图片描述

SHOW TABLE EXTENDED - 查看表的详细信息

SHOW TABLE EXTENDED 将显示与给定正则表达式匹配的所有表的信息

输出包括基本表信息和文件系统信息,如上次访问、创建者、类型、提供程序、表属性、位置、Serde 库、InputFormat、OutputFormat、存储属性、分区提供程序、分区列和架构

如果存在分区规范,它会输出给定分区的文件系统特定信息,例如分区参数和分区统计信息。 请注意,表正则表达式不能与分区规范一起使用

使用语法

SHOW TABLE EXTENDED [ { IN | FROM } database_name ] LIKE regex_pattern
    [ partition_spec ]

使用示例

-- 获取 employee 表的详细信息
SHOW TABLE EXTENDED LIKE 'employee';

在这里插入图片描述

-- 查看指定分区的信息
SHOW TABLE EXTENDED  IN default LIKE 'employee' PARTITION (grade=1);

在这里插入图片描述

SHOW TABLES - 查看表列表

SHOW TABLES 语句返回可选指定数据库的所有表。 此外,该语句的输出可以通过可选的匹配模式进行过滤。 如果未指定数据库,则从当前数据库返回表

使用语法

SHOW TABLES [ { FROM | IN } database_name ] [ LIKE regex_pattern ]

使用示例

-- 查看当前库的所有表列表
SHOW TABLES;
+--------+---------+-----------+
|database|tableName|isTemporary|
+--------+---------+-----------+
| default|      sam|      false|
| default|     sam1|      false|
| default|      suj|      false|
+--------+---------+-----------+

-- 查看default库的所有表列表,且表名以 `sam` 开头
SHOW TABLES FROM default LIKE 'sam*';
+--------+---------+-----------+
|database|tableName|isTemporary|
+--------+---------+-----------+
| default|      sam|      false|
| default|     sam1|      false|
+--------+---------+-----------+

-- 查看当前库的所有表列表,且表名以 `sam`开头 或表名为`suj`
SHOW TABLES LIKE 'sam*|suj';
+--------+---------+-----------+
|database|tableName|isTemporary|
+--------+---------+-----------+
| default|      sam|      false|
| default|     sam1|      false|
| default|      suj|      false|
+--------+---------+-----------+

SHOW TBLPROPERTIES - 查看表属性

给定属性键的可选值,此语句返回表属性的值。 如果未指定键,则返回所有属性

注意,此语句返回的属性值不包括 spark 和 hive 内部的一些属性。 排除的属性是:

1. 所有以前缀 spark.sql 开头的属性
2. 属性键,例如:EXTERNAL、comment
3. hive 内部生成的所有属性,用于存储统计信息。 其中一些属性是:numFiles、numPartitions、numRows

使用语法

SHOW TBLPROPERTIES table_identifier 
   [ ( unquoted_property_key | property_key_as_string_literal ) ]

使用示例

-- 查看customer的所有属性
SHOW TBLPROPERTIES customer;
+---------------------+----------+
|                  key|     value|
+---------------------+----------+
|      created.by.user|      John|
|         created.date|01-01-2001|
|transient_lastDdlTime|1567554931|
+---------------------+----------+

-- 查看customer的所有属性
SHOW TBLPROPERTIES salesdb.customer;
+---------------------+----------+
|                  key|     value|
+---------------------+----------+
|      created.by.user|      John|
|         created.date|01-01-2001|
|transient_lastDdlTime|1567554931|
+---------------------+----------+

-- 通过不带 ` 号的方式查看 customer 表的 created.by.user 属性
SHOW TBLPROPERTIES customer (created.by.user);
+-----+
|value|
+-----+
| John|
+-----+

-- 通过带 ` 号的方式查看 customer 表的 created.date 属性
SHOW TBLPROPERTIES customer ('created.date');
+----------+
|     value|
+----------+
|01-01-2001|
+----------+

SHOW VIEWS - 查看视图列表

SHOW VIEWS 语句返回可选指定数据库的所有视图

此外,该语句的输出可以通过可选的匹配模式进行过滤。 如果未指定数据库,则从当前数据库返回视图。 如果指定的数据库是全局临时视图数据库,我们将列出全局临时视图。 请注意,无论给定数据库如何,该命令还列出本地临时视图

使用语法

SHOW VIEWS [ { FROM | IN } database_name ] [ LIKE regex_pattern ]

使用示例

-- 在不同的数据库中创建 全局/临时 的视图
CREATE VIEW sam AS SELECT id, salary FROM employee WHERE name = 'sam';
CREATE VIEW sam1 AS SELECT id, salary FROM employee WHERE name = 'sam1';
CREATE VIEW suj AS SELECT id, salary FROM employee WHERE name = 'suj';

USE userdb;
CREATE VIEW user1 AS SELECT id, salary FROM default.employee WHERE name = 'user1';
CREATE VIEW user2 AS SELECT id, salary FROM default.employee WHERE name = 'user2';

USE default;
CREATE GLOBAL TEMP VIEW temp1 AS SELECT 1 AS col1;
CREATE TEMP VIEW temp2 AS SELECT 1 AS col1;
-- 查看默认数据库的所有视图
SHOW VIEWS;
+-------------+------------+--------------+
| namespace   | viewName   | isTemporary  |
+-------------+------------+--------------+
| default     | sam        | false        |
| default     | sam1       | false        |
| default     | suj        | false        |
|             | temp2      | true         |
+-------------+------------+--------------+

-- 查看test数据库的所有视图
SHOW VIEWS FROM test;
+-------------+------------+--------------+
| namespace   | viewName   | isTemporary  |
+-------------+------------+--------------+
| test        | user1      | false        |
| test        | user2      | false        |
|             | temp2      | true         |
+-------------+------------+--------------+

-- 查看所有视图,且名称为sam或suj或以temp开头
SHOW VIEWS LIKE 'sam|suj|temp*';
+-------------+------------+--------------+
| namespace   | viewName   | isTemporary  |
+-------------+------------+--------------+
| default     | sam        | false        |
| default     | suj        | false        |
|             | temp2      | true         |
+-------------+------------+--------------+

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
THE END
分享
二维码
< <上一篇
下一篇>>