Hive(5)--Hive操作语句(1)

377 阅读2分钟

这是我参与11月更文挑战的第25天,活动详情查看:2021最后一次更文挑战

数据库级别语句

展示数据库

语法:

show databases;

案例:

show databases;

database_name |
--------------+
default       |
hive_databases|

创建数据库

语法:

CREATE (DATABASE|SCHEMA) [IF NOT EXISTS] 数据库名称   --DATABASE|SCHEMA 是等价的
  [COMMENT 数据库注释] --数据库注释
  [LOCATION  HDFS要存放的路径 ]       --存储在 HDFS 上的位置
  [WITH DBPROPERTIES (property_name=property_value, ...)];   --指定额外属性

案例:

  CREATE DATABASE IF NOT EXISTS hive_databases
  COMMENT 'hive数据库'
  WITH DBPROPERTIES ('create'='jacquesh');

选择数据库

语法:

use 数据库名称;

案例:

use hive_databases;

删除数据库

语法:


DROP (DATABASE|SCHEMA) [IF EXISTS] 数据库名称 [RESTRICT|CASCADE];	

**默认行为是** RESTRICT,**如果数据库中存在表则删除失败。要想删除库及其中的表,可以使用** CASCADE **级联删除**

案例:

DROP DATABASE IF EXISTS hive_databases CASCADE;

显示数据库详情

语法:

DESC DATABASE [EXTENDED] 数据库名称;   --EXTENDED 表示是否显示额外属性

案例:

DESC DATABASE  EXTENDED hive_databases;
db_name       |comment|location              |owner_name|owner_type|parameters       |
--------------+-------+----------------------------------------------------+----------+----------+-----------------+
hive_databases|hive???|hdfs://cluster/user/hive/warehouse/hive_databases.db|hive2     |USER      |{create=jacquesh}|

表级别操作语句

表的创建操作

内部表与外部表

语句:

CREATE [TEMPORARY] [EXTERNAL] TABLE [IF NOT EXISTS] [数据库.]表名     --表名
  [(col_name data_type [COMMENT col_comment],
    ... [constraint_specification])]  --列名 列数据类型
  [COMMENT 表描述]   --表描述
  [PARTITIONED BY (col_name data_type [COMMENT 分区表分区的规则], ...)]  --分区表分区规则
  [
    CLUSTERED BY (col_name, col_name, ...) 
   [SORTED BY (col_name [ASC|DESC], ...)] INTO num_buckets BUCKETS
  ]  --分桶表分桶规则
  [SKEWED BY (col_name, col_name, ...) ON ((col_value, col_value, ...), (col_value, col_value, ...), ...)  
   [STORED AS DIRECTORIES] 
  ]  --指定倾斜列和值
  [
   [ROW FORMAT row_format]    
   [STORED AS file_format]
     | STORED BY 'storage.handler.class.name' [WITH SERDEPROPERTIES (...)]  
  ]  -- 指定行分隔符、存储文件格式或采用自定义存储格式
  [LOCATION 表在HDFS的存储位置]  -- 指定表的存储位置
  [TBLPROPERTIES (property_name=property_value, ...)]  --指定表的属性
  [AS select_statement];   --从查询结果创建表

内部表

CREATE TABLE temps
(
---------------字段配置开始-------------------
    empno INT,
    ename STRING,
    job STRING,
    mgr INT,
    hiredate TIMESTAMP,
    sal DECIMAL(7,2),
    comm DECIMAL(7,2),
    deptno INT
---------------字段配置结束-------------------
)
 ROW FORMAT DELIMITED
 fields terminated by  "\t";         **设置字段的分隔符为 “\t”

//创建表之后可以再HDFS的目录中查看到表文件(默认配置的)**

外部表

CREATE  EXTERNAL  TABLE temps                      **外部表的创建需要加上external关键字修饰**
(
---------------字段配置开始-------------------
    empno INT,
    ename STRING,
    job STRING,
    mgr INT,
    hiredate TIMESTAMP,
    sal DECIMAL(7,2),
    comm DECIMAL(7,2),
    deptno INT
---------------字段配置结束-------------------
)
 ROW FORMAT DELIMITED FIELDS TERMINATED BY "\t"    **设置字段的分隔符为 “\t”**
  LOCATION  **'/hive/emp_external';                  配置数据路径 也是的hdfs 的路径**