hive sql 教学

hdfs中数据库的默认路径为:/user/hive/warehouse

Hive DDL:数据定义语言

先启动hadoop集群,再启动hive(若未配置环境变量,就去hive的bin目录下启动)
创建数据库:
create database name;
查看数据库:
show databases;
删除数据库:
drop database name;
再查看是否已经删除:show databases;
如果删除的数据库不存在,采用if exists判断数据库是否存在
drop database if exist name;
如果数据库不为空,可以采用cascade命令强制删除:
drop database name cascade;
进入数据库:
use name;

创建表:

创建测试表:
create table test_Create_Table(id int,name string);
查看表的相关信息:
查看当前库表名:
show tables;
查看建表信息:
show create table test_Create_Table;
查看表结构:
desc test_Create_Table;

通过使用show create table tablename;命令可以查看表的建表语句和表的存储位置

创建外部表(在创建内部表table前加上external)
create external table tablename(id int,name string); #未指定路径,存放在默认位置中
create external table tablename(id int,name string) location ‘/datas/tablename’; #通过location指定路径,注意路径外加引号
插入命令内部表和外部表是一样的:insert into tablename values(id,‘name’);

查看一个表是内部表还是外部表:show create table 表名;

使用like来复制表结构:
create table table_1 like table_2; #将table_2的表结构复制给table_1,但不会将表内数据复制给table_1

create table tablename(id int comment ‘学生id’,name string comment ‘学生姓名’); #comment表示备注

create table newtableBySelect as select * from tablename; #查询建表

----------分隔符: row format 为指定分隔符
字段分隔符:fields terminated by ‘指定分隔符’
设置字段分隔符:
create table tablename(id int,name string) row format delimited fields terminated by ‘^B’; #在之后的装载中,字段与字段之间则需要用B,而不能使用A等
查看字段分隔符:
desc formatted tablename

数组类型成员分隔符:(语法:collection items terminated by ‘,’)
create table tablename(sku_id string comment ‘商品id’,sku_name string comment ‘商品名称’,id_array array comment ‘商品相关id列表’) row format
delimited fields terminated by ‘|’
collection items terminated by ‘,’ ;

desc formatted tablename 得到结果数组分隔符为’,‘字段分隔符为’|’

装载本地数据到表中:
load data local inpath ‘本地文件目录’ overwrite into table tablename;

map的key和value之间的分隔符:语法:map keys terminated by ‘:’

create table tablename(sku_id string comment ‘商品ID’,sku_name string comment ‘商品名称’,state_map mapstring:string comment ‘商品状态信息’)
row format
delimited fields terminated by ‘|’
map keys terminated by ‘:’ ;

#上面的方法会将map存储为{“id”:“111,token:222,user_name:zhangsan”}这种只有一对"key":“value"的形式,若要改为多对儿"key”:"value"则需要加一个数组类型成员分隔符:

create table tablename(sku_id string comment ‘商品ID’,sku_name string comment ‘商品名称’,state_map mapstring:string comment ‘商品状态信息’)
row format
delimited fields terminated by ‘|’
collection items terminated by ‘,’ #map之间多个"key":"value"对的分搁
map keys terminated by ‘:’ ;
#map的结果为{“id”:“111”,“token”:“222”,“user_name”:“zhangsan”}

行分隔符:(必须放在最后,目前不支持其他分隔符,仅支持"")
语法:lines terminated by "

多个分隔符:
使用MultiDelimitSerDe方法来实现
create table tablenaem(id int,name string,tel string)
row format serde ‘org.apache.hadoop.hive.contrib.serde2.MultDelimitSerDe’
with serdeproperties (“field.delim”=“##”)

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值