• 关于hive建表查询语句小记


    库相关操作

    创建数据库

    1. CREATE DATABASE [IF NOT EXISTS] database_name
    2. [COMMENT database_comment]
    3. [LOCATION hdfs_path]
    4. [WITH DBPROPERTIES (property_name=property_value, ...)];

    IF NOT EXISTS

    也就是没有重复库就创建,有重复就不执行建库

    保证了建库的容错性

    COMMENT database_comment

    库的备注,批注,可以简略写一下库的作用

    LOCATION hdfs_path

    指定库在hdfs的存储路径

    default库的路径 /user/hive/warehouse上

    往后建库的默认路径 /user/hive/warehouse/库名.db

    WITH DBPROPERTIES

    以键值对的形式对表库的属性进行自定义,如时间,创建者等

    1. create database if not exists tss1
    2. comment 'test base'
    3. location '/tmp/tss.db'
    4. with dbproperties ('time'="2020-10-28",'writer'="tss");

    切换当前数据库

    use 库名

     修改数据库

     alter database|schema 更改的属性

    删除数据库

    1. drop database [if not exists] 库名;
    2. 数据库不为空
    3. drop database [if not exists] 库名 cascade;

     表的相关操作

    创建表

    1. CREATE [EXTERNAL] TABLE [IF NOT EXISTS] table_name
    2. [(col_name data_type [COMMENT col_comment], ...)]
    3. [COMMENT table_comment]
    4. [PARTITIONED BY (col_name data_type [COMMENT col_comment], ...)]
    5. [CLUSTERED BY (col_name, col_name, ...)
    6. [SORTED BY (col_name [ASC|DESC], ...)] INTO num_buckets BUCKETS]
    7. [ROW FORMAT row_format]
    8. [STORED AS file_format]
    9. [LOCATION hdfs_path]
    10. [TBLPROPERTIES (property_name=property_value, ...)]
    11. [AS select_statement]

    各个选项介绍

    (1)IF NOT EXISTS 选项来忽略表存在这个异常。

    (2)EXTERNAL 关键字可以让用户创建一个外部表,在建表的同时可以指定一个指向实际数据的路径(LOCATION),在删除表的时候,内部表的元数据和数据会被一起删除,而外 部表只删除元数据,不删除数据。

    (3)COMMENT:为表和列添加注释。

    (4)PARTITIONED BY 创建分区表

    (5)CLUSTERED BY 创建分桶表

    (6)SORTED BY 不常用,对桶中的一个或多个列另外排序

    (7)ROW FORMAT 序列化数据,按照什么方式序列化处理

    (8)STORED AS指定存储文件类型 常用的存储文件类型:SEQUENCEFILE(二进制序列文件)、TEXTFILE(文本)、RCFILE(列式存储格式文件)

    (9)LOCATION :指定表在 HDFS 上的存储位置。

    (10)AS:后跟查询语句,根据查询结果创建表。

    (11)LIKE 允许用户复制现有的表结构,但是不复制数据。

    举例:

    1. create table if not exists
    2. student( id int, name string )
    3. row format delimited fields terminated by '\t'
    4. stored as textfile
    5. location '/user/hive/warehouse/student';

    创建一个管理表,字段之间按照'\t'分割,普通文本类型,在数据库default下创建表

    1. create table if not exists student2
    2. as select id, name from student;

    根据as后面查询出的数据进行建表,类型一样,数据复制填入

    1. create table if not exists student3
    2. like student;

    根据like后面表的类型创建表,类型一样,数据不复制

    1. create external table
    2. if not exists
    3. student(id int, name string)
    4. row format delimited fields terminated by '\t';

    创建一个外部表,其他与管理表类似

    1. 管理表改外部表
    2. alter table student2 set tblproperties('EXTERNAL'='TRUE');
    3. 外部表转内部表
    4. alter table student2 set tblproperties('EXTERNAL'='FALSE');

    注意:('EXTERNAL'='TRUE')和('EXTERNAL'='FALSE')为固定写法,区分大小写!

    修改表

    ALTER TABLE table_name RENAME TO new_table_name

    重命名表 

    1. ALTER TABLE table_name CHANGE [COLUMN]
    2. col_old_name col_new_name column_type
    3. [COMMENT col_comment]
    4. [FIRST|AFTER column_name]

    修改表中字段

    其中comment 指定字段注解

    first 修改字段位置放到第一位,after 放在什么字段之后

    增加替换

     其中add是追加字段

    REPLACE 则是表示替换表中所有字段

    其中替换是可以多个字段写的

    其中替换和修改使用较多,因为add的位置不可控,相比之下灵活性不高

    alter table student add columns(sex string);

    增加字段

    alter table student replace columns(id long,sex string, name string);

    替换表

    删除表

    drop table 表名;

    以上就是库,表增删改的基本内容啦

    如有错误,欢迎评论区指正

    部分参考尚硅谷,如有侵权,联系删

  • 相关阅读:
    儿童玩具相机亚马逊CPC认证检测标准
    在Windows上使用.NET部署到Docker 《让孩子们走出大坑》
    第九章 排序【数据结构】【精致版】
    在Python中调用imageJ开发
    现代密码学第四版杨波著-期末复习汇总
    是使用local_setup.bash 还是 setup.bash
    Python爬虫之Splash详解
    视频号视频怎么保存到手机,视频号视频怎么保存到手机相册里,苹果手机电脑都可以用
    protobuf与grpc
    基于springboot+vue实现乌鲁木齐南山冰雪旅游服务网管理系统项目【项目源码+论文说明】
  • 原文地址:https://blog.csdn.net/qq_51260764/article/details/127566387