赞
踩
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”=“##”)
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。