hive的 DDL DML等等

DDL数据库定义

  1. 创建数据库
1.创建一个数据库
	create database db;
2.避免要创建的数据库已经存在
	create database if not exists db;
3.创建数据库时,指定数据库在hdfs上存放的位置
	create database db location '/user'
  1. 查询数据库
1.显示数据库
	show databases;
2.过滤显示查询的数据库
	show database like ‘db’;
3.显示数据库信息
	desc database db;
  1. 切换当前数据库
use db;
  1. 删除数据库
1.删除空数据库
		drop db;
	2.如果数据库不为空,可以采用casecode命令,强制删除
		drop database db casecode;
  1. 创建表
1.建表语法
		create [external] table [if not exists] table_name
		[(col_name data_type [comment col_comment],....)]
		[comment table_comment]
		[row format row_format]
		[stored as file_format]
		[location hdfs_path]
		like tablename
	2.字段解释说明
		(1)external 关键字可以让用户创建一个外部表,在建表的同时指定一个指向一个实际的
		路径(location)hive创建内部表时,会将数据移动到数据仓库指向的路径;如果创建外部
		表,仅记录数据所在的路径,不会对数据的位置做任何的改变,在删表的时候,内部表的元数
		据和数据会被一起删除,外部表只删除元数据,不会删除数据
		(2)comment  :为表和列添加注释
		(3)row format   delimited fields terminated by char4)stored as 指定存储文件类型
				常用的存储文件类型:sequencefile(二进制序列文件)、textfile(文
				本),rcfile(列式存储格式文件)如果文件数据是纯文本,可以使用
				stored textfile 如果数据需要压缩 使用storesd as sequencefile
		(6)location :指定表在hdfs上存储位置
		(7)like 允许用户复制现有的表结构 但是不复制数据
			eg:如果当前创建的表table1 希望table1和已经存在的tablle0的表结构相同,
			就可以使用like指令直接创建 create table table1 like table0;
  1. 内部表
1)创建普通表
 	create table if not exists user(
	id int ,name string 
	)
	row format delimited fields terminated by '\t'
	stored as textfile
	location '/user/hive/....'
(2)根据查询结果创建表
	create table if not exists user as select * from student;
(3)根据已经存在的表结构创建表
	create table if not exists user like student;
(4)查询表的类型
	desc formatted user;
  1. 外部表
1.概念
	因为表时外部表,所以hive并非认为其完全拥有这份数据,删除该表并不会删除掉这份数据,不过
	描述表的元数据信息会被删除掉
2.使用场景
	外部表的基础上做大量的统计分析,用到的中间表,结果表使用内部表存储,数据通过
	select+insert 进入内部表
3.创建外部表的方式
	create external table if not exists user(
	id int ;
	name string
	)
	row format delimited fields terminated by '\t'
	stored as textfile 
	location ''
4.向外部表中导入数据
	load data local inpath '' into table user
  1. 修改表
1.重命名表
	alter table A rename to b;
2.修改列
	alter table A change cloumn old_clu new_clu cloumn_type
3.增加列
	alter table A add cloumns(new_clu cloumn_type)
4.查询表结构
	desc user;

  1. 删除表
 	drop table if exists user;

DML数据库操纵语言

  1. 向表中装载数据(load)
1.语法
load data [local] inpath '路径' [overwrite] into table student;
(1)load data: 表示加载数据
(2)local:表示从本地加载数据到hive表(复制)否则从HDFS 加载数据到hive表(移动)
(3)inpath:表示加载数据的路径
(4)overwrite into :表示覆盖表中已有的数据,否则表示追加
(5)into table:表示加载到哪张表
(6)student:表示具体的表

2.加载本地文件到hive中
	load data local inpath "" into table user;
3.加载HDFS文件到hive中
	load data inpath '' into table user;
4.加载数据覆盖表中已有的数据
	load data inpath  ''  overwrite into table user;

2.通过查询语句向表中插入数据(insert)

1.基本插入数据
	insert into table student values(1,"zhangsan");

3.查询语句中创建表并加载数据(AS SELECT)

create table if not exists user
	as select id,name form studnet;

4.创建表时通过Location指定加载数据路径

	create table if not exists user(
	id int,
	name string
	)
	row format delimited fields terminated by '\t'
	location 'user/hive/warehouse/user'
	2.上传数据到hdfs上
	hive (default)> dfs -put /opt/module/datas/student.txt
	/user/hive/warehouse/student4;
	3.查询数据
	hive (default)> select * from student4;

5.Import数据到指定Hive表中

	注意:先用export导出后,再将数据导入。
	hive (default)> import table student8 from
	'/user/hive/warehouse/export/student';
  1. 数据导出
1.Insert导出
	1.将查询结果导出到本地
	insert overwrite local directory '' select * from student
	2.将结果格式化导出本地
	insert overwrite local directory ''
	row format delimited fields terminated by '\t'
	select * from student;
	3.将结果导出到hdfs上(将local去掉)
2.hadoop命令导出本地
	fs -get local_path hdfs_path
3.hive shell 命令导出本地
	hive -e "select * form student" > "/opt/stu.txt";
4.export 导出到hdfs上
	export table default.student to '/user/hive/warehouse/export/student';

3.清除表中的数据

注意 truncate 只能删除管理表,不能删除外部表中的数据
	truncate table user;
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值