• Hive-DDL-常用操作命令(数据库操作、表操作、分区操作、show语法)


    1. 数据库操作

    整体概述

    • 在Hive中,DATABASE的概念和RDBMS中类似,称之为数据库,DATABASE和SCHEMA是可以互换的,都可以使用。
    • 默认的数据库叫做default,存储数据位置位于/user/hive/warehouse下。
    • 用户自己创建的数据库存储位置是/user/hive/warehouse/database_name.db下。

    1.1 creat database

    create database 用于创建新的数据库

    • COMMENT:数据库的注释说明语句
    • LOCATION:指定数据库在HDFS存储位置
    • WITH DBPROPERTIES:用于指定一些数据库的属性配置
    create (database|schema)[if not exists] database_name
    [comment database_comment]
    [location hdfs_path]
    [with dbproperties(property_name=property_value,...)];
    
    • 1
    • 2
    • 3
    • 4

    实例:创建数据库kox2102

    create database if not exists kox2102
    comment "this is my db"
    with dbproperties ('createdBY'='Allen');
    
    • 1
    • 2
    • 3

    1.2 describe database

    • 显示Hive中数据库的名称,注释及其在文件系统上的位置信息。
    • EXTENDED关键字用于显示更多信息。可以将关键字describe简写成desc使用。
    describe database [EXTENDED] db_name;
    
    • 1

    1.3 use database

    • 选定指定数据库(kox2102)
    use kox2001;
    
    • 1

    1.4 drop database

    • 删除数据库
    • 默认行为是RESTRICT,意味着仅在数据库为空时才删除它。
    • 要删除带有表的数据库,使用CASCADE。
    drop database database_name [RESTRICT|CASCADE];
    
    • 1

    1.5 alter database

    • 更改与Hive中的数据库相关联的元数据
    -- 更改数据库属性
    alter database database_name SET DBPROPERTIES (property_name=property_value,...);
    -- 更改数据库所有者
    alter database database_name SET OWNER USER userl
    -- 更改数据库位置
    alter database database_name SET LOCATION hdfs_path;
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    2. 表操作

    整体概述

    • Hive中针对表的DDL操作可以说是DDL中的核心操作,包括建表、修改表、删除表、描述表元素数据信息。
    • 其中以建表语句为核心中的核心

    2.1 describe table

    • 显示Hive中表的元数据信息
    • 如果指定了EXTENDED关键字,则它将以Thrift序列化形式显示表的所有元数据。
    • 如果指定FORMATTED关键字,则它将以表格格式显示元数据。

    2.2 drop table

    • 删除该表的元数据和数据
    drop table table_name;
    
    • 1

    2.3 truncate table

    • 从表中删除所有行
    truncate table_name;
    
    • 1

    2.4 alter table

    -- 更改表名
    alter table table_name RENAME TO new_table_name;
    -- 更改表属性
    alter table table_name SET TBLPROPERTIES (property_name = property_value,...);
    -- 更改表注释
    alter table table_name SET TBLPROPERTIES ('comment' = 'new comment for student table');
    -- 更改SerDe属性
    alter table table_name SET SERDE serde_class_name [WITH SERDEPROPERTIES(property_name = property_value,...)];
    alter table table_name [PARTITION partition_spec] SET SERDEPROPERTIES serde_properties;
    alter table table_name SET SERDEPROPERTIES('field.delim' = ',');
    -- 移除SerDe属性
    alter table table_name [PARTITION partition_spec] UNSET SERDEPROPERTIES (property_name,...);
    -- 更改表的文件存储格式 该操作仅更改表元数据,现有数据的任何转换都必须在Hive之外进行。
    alter table table_name SET FILEFORMAT file_format;
    -- 更改表的存储位置路径
    alter table table_name SET LOCATION "new location";
    
    -- 更改列名称/类型/位置/注释
    create table test_change (a int, b int, c int);
    -- a 列名修改为a1
    alter table test_change CHANGE a a1 int;
    -- a1列名改为a2,并将类型改为string,放在b列后面
    alter table test_change CHANGE a1 a2 STRING AFTER b;
    -- c列改为c1,并放在列首
    alter table test_change CHANGE c c1 int FIRST;
    --注释
    alter table test_chage CHANGE a1 a1 int comment 'this is column a1';
    
    -- 添加替换列
    alter table table_name ADD|REPLACE COLUMNS (col_name data_type,...);
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30

    3. 分区操作

    整体概述

    • Hive中针对分区Partition的操作主要包括:增加分区、删除分区、重命名分区、修复分区、修改分区。

    3.1 add partition

    • ADD PARTITION会更改表元数据,但不会加载数据。如果分区位置中不存在数据,查询时将不会返回结果。
    • 因此需要保证增加的分区位置路径下,数据已经存在,或者增加完分区之后导入分区数据。
    -- 一次添加一个分区
    alter table table_name ADD PARTITION (dt='20170101') location '/user/hadoop/warehouse/table_name/dt=20170101';
    -- 一次添加多个分区
    alter table table_name ADD PARTITION (dt='2008-08-08',country='us') location '/path/to/us/part080808' PARTITION (dt='2008-08-09',country='us') location '/path/to/us/part080809';
    
    • 1
    • 2
    • 3
    • 4

    3.2 rename partition

    -- 重命名分区
    alter table table_name PARTITION partition_spec RENAME TO PARTITION partition_spec;
    alter table table_name PARTITION (dt='2008-08-09') RENAME TO PARTITION (dt='20080809');
    
    • 1
    • 2
    • 3

    3.3 delete partition

    • 删除表的分区。这将删除该分区的数据和元数据。
    -- 删除分区
    alter table table_name DROP [IF EXISTS] PARTITION (dt='20080-08-08',country='us');
    alter table table_name DROP [IF EXISTS] PARTITION (dt='2008-08-08',coountry='us')PURGE--直接删除
    
    • 1
    • 2
    • 3

    3.4 alter partition

    -- 修改分区
    alter table table_name PARTITION (dt='2008-08-09')SET FILEFORMAT file_format;
    -- 更改分区位置
    alter table table_name PARTITION (dt='2008-08-09')SET LOCATION 'new location';
    
    • 1
    • 2
    • 3
    • 4

    4. show语法

    整体概述

    • Show相关的语句提供了一种查询
    -- 显示所有数据库 SCHEMAS 和 DATABASES的用法 功能一样
    show database;
    show schemas;
    -- 显示当前数据库所有表/视图/物化视图/分区/索引
    show tables;
    SHOW TABLES [IN database_name]; --指定某个数据库
    -- 显示当前数据库下所有视图
    Show Views;
    SHOW VIEWS 'test_*' --显示所有与test_相关的
    SHOW VIEWS FROM test1; --显示test1
    SHOW VIEWS [IN/FROM database_name];
    -- 显示当前数据库下所有物化视图
    SHOW MATERIALIZED VIEWS [IF/FROM database_name];
    -- 显示表分区信息,分区按字母顺序列出,不是分区表执行该语句会报错
    show partitions table_name;
    -- 显示表/分区的扩展信息
    SHOW TABLE EXTENDED [IN|FROM database_name] LIKE table_name;
    show table extended like student;
    -- 显示表的属性信息
    SHOW TBLPROPERTIES table_name;
    show tbproperties student;
    -- 显示表、视图的创建语言
    SHOW CREATE TABLE ([db_name]table_name|view_name);
    show create table student;
    -- 显示表中的所有列,包括分区列
    SHOW COLUMNS (FROM|IN) table_name [(FROM|IN)db_name];
    show columns in student;
    -- 显示当前支持的所有自定义和内置函数
    show functions;
    -- 查看表信息
    desc extended table_name;
    -- 查看数据库相关信息
    describe database database_name;
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
  • 相关阅读:
    人工智能考证初步探索
    git 基础使用(上传,修改上传)
    [运维|docker] ubuntu镜像更新时报E: Problem executing scripts APT::Update::Post-Invoke错误
    【云原生-K8s-2】kubeadm搭建k8s高可用集群(三主两从一VIP)完整教程
    使用FastChat部署Baichuan2
    Spring+SpringBoot+SpringCloud 全攻略
    【试题032】C语言关系运算符例题
    基于 SSH 的任务调度系统的设计与实现
    使用awescnb自定义博客园皮肤
    Java学习多态之向上转型
  • 原文地址:https://blog.csdn.net/Kox_233/article/details/128033493