DDL:data definittion language  数据定义语言

  主要是定义或改变表的结构、数据类型、表之间的链接和约束等初始化操作

DML:data manipulation language  数据操作语言

  主要是对数据库的数据进行增删改查操作,如select、insert、delete、update等

一、对数据库的操作

  1.创建数据库并指定在hdfs的存储路径

  create database if not exists hive_db location '/hive_db';

  注释:不指定路径所创建的数据库默认存储路径为:“/user/hive/warehouse“

  create database if not exists hive_ab;

  2.查看数据库信息

    1)查看数据库结构

    desc database hive_db;

    2)添加数据库的描述信息

    alter database hive_db set dbproperties('creater'='wyh');

    3)查看数据库的拓展信息

    desc database extended hive_db;

  3.筛选查询数据库

  show database like 'hive*';

  4.删除数据库

  drop database wyh;

  drop database if exists hive_db;

二、DDL操作

  hive中表的种类有很多,如管理表(Manager Table)、外部表(External Table)、分区表(Partition Table)、分桶表,下面我先介绍前三种表的定义、修改操作。

  1.管理表:Hive创建表时默认创建的就是管理表,也叫内部表,它不擅长数据共享,删除表后数据也会被删除。

 创建管理表

 create table if not exists emp1(id int,name string) row format delimited fields terminated by '\t';

 导入数据

 load data local inpath '/root/data/emp.txt' into table emp1;

 创建新管理表并从emp1表中导入name=wyh的该行数据

 create table if not exists emp2 as select * from emp1 where name = 'wyh';

 查询表的结构信息:

 desc formatted emp2;

  2.外部表:Hive不任务这张表拥有该数据,所以删除该表后数据不会删除,当再次创建结构与数据类型相同的表(无论是外部表还是管理表)时,数据会自动关联。但是若第二次创建的是管理表,再次删除后即使创建相同格式和数据类型的表数据将不再恢复!

  创建外部表

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

  导入数据

  load data local inpath '/root/data/student.txt' into table student;

  查看表结构

  desc formatted student;  (可以从Table Type看到:EXTERNAL_TABLE)

  删除表

  drop table if exists student;

  3.分区表:分区表对应HDFS的一个独立的文件目录,目录下是该分区表所有分区的目录,每个分区目录下存储该分区内存储的数据。

  创建分区表

  create table dept_partitions(id int,name string,loc string) partitioned by(day string) row format delimited fiedls terminated by '\t';

  导入数据

  load data local inpath '/root/data/dept.txt' into table dept_partition partition(day='1001'); 

  (注意:不能直接导入数据,必须指定分区)

  添加分区

  alter table dept_partition add partition(day='1002');

  (添加该分区后该分区内是没有数据的)

  查询数据

  select * from dept_partition where day='1001';

  select * from dept_partition;

  删除分区

  alter table dept_partition drop partition(day='1002');

  alter table dept_partition drop partition(day='1001'),partition(day='1002');

三、修改表

  1.修改表名

  alter table student rename to students;

  2.添加列

  alter table students add columns(age int,sex string);

  3.更新列(列名和列的数据类型)

  alter table student change column age birthday string;

  4.替换replace

  alter table students replace columns(descccc int);

  alter table students replace columns(id int,name string,loc string);

  注意:第二次替换后列的数据类型与第一次相同,数据会恢复!

Hive的DDL操作的更多相关文章

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

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

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

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

  3. Hive 学习之路(四)—— Hive 常用DDL操作

    一.Database 1.1 查看数据列表 show databases; 1.2 使用数据库 USE database_name; 1.3 新建数据库 语法: CREATE (DATABASE|SC ...

  4. Hive 系列(四)—— Hive 常用 DDL 操作

    一.Database 1.1 查看数据列表 show databases; 1.2 使用数据库 USE database_name; 1.3 新建数据库 语法: CREATE (DATABASE|SC ...

  5. 入门大数据---Hive常用DDL操作

    一.Database 1.1 查看数据列表 show databases; 1.2 使用数据库 USE database_name; 1.3 新建数据库 语法: CREATE (DATABASE|SC ...

  6. Hive学习笔记(三)-- DML和DDL操作

    01-Hive表的DDL操作--修改表 创建一个分区表并加载数据 查询数据 修改表 加载数据 查询一下 另外一个命令查询表的分区 如何删除一个分区呢 查询一个,分区被删除了 修改表名 查询改名的新表的 ...

  7. Hive数据类型和DDL操作

    hive命令 在Linux下的命令行中直接输入如下命令,可以查看帮助信息: # hive -help 常用的如-e.-f参数. 使用-e参数,可以直接在命令行传递SQL语句进行hive表数据的查询: ...

  8. hive基本的操作语句(实例简单易懂,create table XX as select XX)

    hive建表语句DML:https://cwiki.apache.org/confluence/display/Hive/LanguageManual+DDL#LanguageManualDDL-Cr ...

  9. Hive QL的操作

    一.数据定义DDL操作 创建表: --create table为创建一个指定名字的表 create(external) table table_name --external关键字可以让用户创建一个外 ...

随机推荐

  1. Apache Hadoop 2.9.2 的HDFS High Available模式部署

    Apache Hadoop 2.9.2 的HDFS High Available 模式部署 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 我们知道,当NameNode进程挂掉后,可 ...

  2. Java使用AES算法进行加密解密

    一.加密 /** * 加密 * @param src 源数据字节数组 * @param key 密钥字节数组 * @return 加密后的字节数组 */ public static byte[] En ...

  3. (四)Python中的“四大才子”(字符串、列表、字典、集合)

    前戏:在python中把数据序列分为可变(mutable)和不可变(immutable)两种 不可变:string.int.float.tuple 特点:相同对象只是占用一个内存地址,不管有多少个变量 ...

  4. Git分支实战入门详细图解

    现在我们模拟一个简单的分支和合并案例,其中工作流可供真实项目借鉴. (1)在master开展工作 (2)为新的需求创建分支 (3)在新的分支上展开工作 这时,你接到一个电话,说项目有一个严重的问题需要 ...

  5. jQuery禁用、开启鼠标滚轮事件

    1.禁用鼠标滚轮事件 $(document).bind('mousewheel', function(event, delta) {return false;}); 2.开启鼠标滚轮事件,直接解绑事件 ...

  6. slim.arg_scope中python技巧

    slim.arg_scope函数说明如下: Stores the default arguments for the given set of list_ops. For usage, please ...

  7. kali中的webshell工具--webacoo

    webacoo webshell其实就是放置在服务器上的一段代码 kali中生成webshell的工具 WeBaCoo(Web Backdoor Cookie) 特点及使用方法 类终端的shell 编 ...

  8. 2018-2019-2 网络对抗技术 20165221 Exp3 免杀原理与实践

    2018-2019-2 网络对抗技术 20165221 Exp3 免杀原理与实践 基础问题回答 杀软是如何检测出恶意代码的? 主要依托三种恶意软件检测机制. 基于特征码的检测:一段特征码就是一段或者多 ...

  9. Large-Margin Softmax Loss for Convolutional Neural Networks

    paper url: https://arxiv.org/pdf/1612.02295 year:2017 Introduction 交叉熵损失与softmax一起使用可以说是CNN中最常用的监督组件 ...

  10. C语言尝试在不同源文件中调用程序段

    基于Visual Studio 2015 将下面两个cpp文件置于同一源文件目录下即可 源.cpp #include <stdio.h> int main() { extern int s ...