Hive——基本DDL语句

DDL:Data Definition Language(数据定义语言,与关系型数据库相似)

官方手册:https://cwiki.apache.org/confluence/display/Hive/LanguageManual+DDL

HiveQL DDL包括以下内容:

HiveQL DDL statements are documented here, including:

●CREATE DATABASE/SCHEMA, TABLE, VIEW, FUNCTION, INDEX

●DROP DATABASE/SCHEMA, TABLE, VIEW, INDEX

●TRUNCATE TABLE

●ALTER DATABASE/SCHEMA, TABLE, VIEW

●MSCK REPAIR TABLE (or ALTER TABLE RECOVER PARTITIONS)

●SHOW DATABASES/SCHEMAS, TABLES, TBLPROPERTIES, VIEWS, PARTITIONS, FUNCTIONS, INDEX[ES], COLUMNS, CREATE TABLE

●DESCRIBE DATABASE/SCHEMA, table_name, view_name

PARTITION statements are usually options of TABLE statements, except for SHOW PARTITIONS.

1、创建库

(Hive的数据都是存储在HDFS上的,默认有一个根目录,默认值为/user/hive/warehouse.也可以在hive-site.xml配置中由参数hive.metastore.warehouse.dir指定)

CREATE (DATABASE|SCHEMA) [IF NOT EXISTS] database_name
[COMMENT database_comment]
[LOCATION hdfs_path]
[WITH DBPROPERTIES (property_name=property_value, ...)];

小例子:create database hive1;

hive> create database hive1;
OK
Time taken: 1.503 seconds

此时在/user/hive/warehouse中就会多了hive1数据库,数据库的存储路径:${hive.metastore.warehouse.dir}/databasename.db

drwxr-xr-x   - hadoop supergroup          0 2018-09-05 05:53 /user/hive/warehouse/hive1.db

(默认数据库是没有显示成warehouse.db的,它就是在/user/hive/warehouse中)

查看数据库:show databases;

hive> show databases;
OK
default
hive1
Time taken: 0.522 seconds, Fetched: 2 row(s)

2、删除库

DROP (DATABASE|SCHEMA) [IF EXISTS] database_name [RESTRICT|CASCADE];

默认情况下,Hive不允许删除一个里面有表存在的数据库,如果想删除数据库,要么先将数据库中的表全部删除,要么可以使用CASCADE关键字,使用该关键字后,Hive会自己将数据库下的表全部删除。RESTRICT关键字就是默认情况,即如果有表存在,则不允许删除数据库。

3、修改库

ALTER (DATABASE|SCHEMA) database_name SET DBPROPERTIES (property_name=property_value, ...);  

ALTER (DATABASE|SCHEMA) database_name SET OWNER [USER|ROLE] user_or_role;   

ALTER (DATABASE|SCHEMA) database_name SET LOCATION hdfs_path;

4、使用库

USE database_name;
USE DEFAULT;

5、查看库

show databases;//查看库
desc database [extended] dbname;//显示数据库的详细属性信息
select current_database(); //查看正在使用哪个库
show create database t3; //查看创建库的详细语句

6、创建表(hive中的表对应的就是hdfs中的一个文件夹)

详细语法看太多,看官网:https://cwiki.apache.org/confluence/display/Hive/LanguageManual+DDL

CREATE [EXTERNAL] TABLE [IF NOT EXISTS] table_name
  [(col_name data_type [COMMENT col_comment], ...)]
  [COMMENT table_comment]
  [PARTITIONED BY (col_name data_type [COMMENT col_comment], ...)]
  [CLUSTERED BY (col_name, col_name, ...)
    [SORTED BY (col_name [ASC|DESC], ...)] INTO num_buckets BUCKETS]
  [ROW FORMAT row_format]
  [STORED AS file_format]
  [LOCATION hdfs_path]
•CREATE TABLE 创建一个指定名字的表。如果相同名字的表已经存在,则抛出异常;用户可以用 IF NOT EXIST 选项来忽略这个异常
•EXTERNAL 关键字可以让用户创建一个外部表,在建表的同时指定一个指向实际数据的路径(LOCATION)
•LIKE 允许用户复制现有的表结构,但是不复制数据
•COMMENT可以为表与字段增加描述
•PARTITIONED BY 指定分区
•ROW FORMAT
  DELIMITED [FIELDS TERMINATED BY char] [COLLECTION ITEMS TERMINATED BY char]
    MAP KEYS TERMINATED BY char] [LINES TERMINATED BY char]
    | SERDE serde_name [WITH SERDEPROPERTIES
    (property_name=property_value, property_name=property_value, ...)]
  用户在建表的时候可以自定义 SerDe 或者使用自带的 SerDe。如果没有指定 ROW FORMAT 或者 ROW FORMAT DELIMITED,将会使用自带的 SerDe。在建表的时候,
用户还需要为表指定列,用户在指定表的列的同时也会指定自定义的 SerDe,Hive 通过 SerDe 确定表的具体的列的数据。
•STORED AS
  SEQUENCEFILE //序列化文件
  | TEXTFILE //普通的文本文件格式
  | RCFILE  //行列存储相结合的文件
  | INPUTFORMAT input_format_classname OUTPUTFORMAT output_format_classname //自定义文件格式
  如果文件数据是纯文本,可以使用 STORED AS TEXTFILE。如果数据需要压缩,使用 STORED AS SEQUENCE 。
•LOCATION指定表在HDFS的存储路径

例子:创建book表(字段分隔符使用'\t')

hive> create table book(
> name string,
> price double,
> publisher string
> )row format delimited fields terminated by '\t';
OK
Time taken: 0.558 seconds
hive> load data local inpath '/home/hadoop/data/book.txt' into table book;
Loading data to table default.book
Table default.book stats: [numFiles=1, totalSize=106]
OK
Time taken: 1.189 seconds
hive> select * from book;
OK
Harry Potter 115.7 JK Rowling
Lord of the Rings 123.9 JRR Tolkein
Great Expectations 44.9 Charles Dickens
Time taken: 0.41 seconds, Fetched: 3 row(s)

跟传统关系型数据库一样,也可以采用as select 创建表(底层会跑mr作业的):

create table book1 as select * from book;

使用like table 只会创建表结构:

create table book2 like book;

7、查看表

show tables;//查看当前使用的数据库中有哪些表
show tables in test;//查看非当前使用的数据库中有哪些表
show tables like 'student_c*';//查看数据库中以xxx开头的表
desc student;//查看表的信息
desc extended student;//查看表的详细信息(格式不友好)
desc formatted student;//查看表的详细信息(格式友好)
show partitions student_ptn;//查看分区信息
show create table student_ptn;//查看表的详细建表语句

8、删除表

DROP TABLE [IF EXISTS] table_name [PURGE];

9、清空表

TRUNCATE TABLE table_name [PARTITION partition_spec];

10、修改表

alter table student rename to new_student;//修改表
alter table new_student add columns (score int);// 增加一个字段
alter table new_student change name new_name string;//修改一个字段的定义
alter table new_student replace columns (id int, name string, address string);//替换所有字段
alter table student_ptn add partition(city="chongqing");//添加分区
alter table student_ptn add partition(city="chongqing2") partition(city="chongqing3")
partition(city="chongqing4");//添加多个分区
alter table student_ptn drop partition (city='beijing');//删除分区
alter table student_ptn partition (city='beijing') set location '/student_ptn_beijing';//修改分区存储目录

Hive——基本DDL语句的更多相关文章

  1. 大数据开发实战:Hive表DDL和DML

    1.Hive 表 DDL 1.1.创建表 Hive中创建表的完整语法如下: CREATE [EXTERNAL] TABLE [IF NOT EXISTS]  table_name [ (col_nam ...

  2. Hive学习之路 (七)Hive的DDL操作

    库操作 1.创建库 语法结构 CREATE (DATABASE|SCHEMA) [IF NOT EXISTS] database_name [COMMENT database_comment] //关 ...

  3. Apache Hive (七)Hive的DDL操作

    转自:https://www.cnblogs.com/qingyunzong/p/8723271.html 库操作 1.创建库 语法结构 CREATE (DATABASE|SCHEMA) [IF NO ...

  4. Oracle获取干净的建表DDL语句,不含其它存储、表空间、段属性

    早上一个同事资讯怎么获取到建表语句而且是不带存储那种SQL.Oracle自己提供了一个函数DBMS_METADATA.GET_DDL,但是获取到的建表语句含有存储.表空间.以及一些其他段的属性.如图: ...

  5. 数据库DDL语句书写规范

    数据库DDL语句书写规范 1.SQL语句编写说明编写SQL语句应遵循统一的规范,包括大小写.空格.换行.缩进等等,只有完全一样的SQL才能在数据库中共享,从而减少硬解析. 字段类型.长度:根据数据情况 ...

  6. Hibernate hbm2ddl.auto DDL语句 控制台输出的配置

    在开发中我们需要知道hbm2ddl.auto生成的SQL语句,来判断代码的正确性,现在记录配置的过程. Hibernate的DDL语句在控制台的输出配置: 一.在lib中确保只有下面的三个相关包:1) ...

  7. oracle使用dbms_metadata包取得所有对象DDL语句

    当我们想要查看某个表或者是表空间的DDL的时候,可以利用dbms_metadata.get_ddl这个包来查看. dbms_metadata包中的get_ddl函数详细参数 GET_DDL函数返回创建 ...

  8. 利用dbms_metadata.get_ddl查看DDL语句

    http://www.cnblogs.com/aocle/archive/2011/10/13/2209790.html 当我们想要查看某个表或者是表空间的DDL的时候,可以利用dbms_metada ...

  9. mysql一个事务中有DDL语句的binlog情况

      在autocommit=1的情况下,开启一个事务,如果里面有DDL语句,那么事务开始到DDL语句之间的DML语句都会被提交.再开启新的事务.可以从binlog中看出   session语句: 09 ...

随机推荐

  1. TensorRT 数据和表格示例

    TensorRT 数据和表格示例 TensorRT 7.1在绑定索引方面比其前身更加严格.以前,允许错误配置文件的绑定索引.考虑一个网络,该网络具有四个输入,一个输出,以及在其中的三个优化配置文件 I ...

  2. 适用于Linux 2的Windows子系统上的CUDA

    适用于Linux 2的Windows子系统上的CUDA Announcing CUDA on Windows Subsystem for Linux 2 为了响应大众的需求,微软在2020年5月的构建 ...

  3. 算法编程Algos Programming

    算法编程Algos Programming 不同算法的集合,用于编程比赛,如ACM ICPC. 算法按主题划分.大多数算法都可以从文件中按原样运行.每种算法都有一个参考问题,并对其时间和空间复杂度作了 ...

  4. Django(63)drf权限源码分析与自定义权限

    前言 上一篇我们分析了认证的源码,一个请求认证通过以后,第二步就是查看权限了,drf默认是允许所有用户访问 权限源码分析 源码入口:APIView.py文件下的initial方法下的check_per ...

  5. Task06:综合练习

    练习一: 各部门工资最高的员工(难度:中等) 创建Employee 表,包含所有员工信息,每个员工有其对应的 Id, salary 和 department Id. +----+-------+--- ...

  6. Redis五种基础与三种高级数据结构解析

    记得点赞+关注呦. 前言 在 Redis 最重要最基础就属 它丰富的数据结构了,Redis 之所以能脱颖而出很大原因是他数据结构丰富,可以支持多种场景.并且 Redis 的数据结构实现以及应用场景在面 ...

  7. Vue(9)购物车练习

    购物车案例 经过一系列的学习,我们这里来练习一个购物车的案例   需求:使用vue写一个表单页面,页面上有购买的数量,点击按钮+或者-,可以增加或减少购物车的数量,数量最少不得少于0,点击移除按钮,会 ...

  8. 【原创】SystemVerilog中的多态和虚方法

    封装可以隐藏实现细节,使代码模块化,继承可以扩展已经存在的代码模块,目的都是为了代码重用.多态是为了实现接口的重用.在SystemVerilog中,子类和父类之间多个子程序使用同一个名字的现象称为Sy ...

  9. 关于基于Nexus3和Docker搭建私有Nuget服务的探索

    背景简介 NuGet是Microsoft开发平台的程序集包管理器,它由客户端工具和服务端站点组成,客户端工具提供给用户管理和安装/卸载软件程序包,以及打包和发布程序包到NuGet服务端站点等功能,服务 ...

  10. 重新整理 .net core 实践篇————网关中的身份签名认证[三十七]

    前言 简单整理一下网关中的jwt,jwt用于授权认证的,其实关于认证授权这块https://www.cnblogs.com/aoximin/p/12268520.html 这个链接的时候就已经写了,当 ...