hiveSql-DDL

DDLDML要多,主要的命令有CREATEALTERDROP等,DDL主要是用在定义或改变表(TABLE)的结构,数据类型,表之间的链接和约束等初始化工作上,他们大多在建立表时使用

 

1、创建数据库:

括号里面的2个里选一个

CREATE (DATABASE|SCHEMA) [IF NOT EXISTS] <database name>

2、删除数据库:

中括号表示可写可不写

DROP (DATABASE|SCHEMA) [IF EXISTS]  database_name

3、对表的字段进行更改

Alter

4、使用数据库

use database_name

与传统的sql语句是一样的

hive的数据类型2部分:

1struct,map,Array(都是集合类型)

其中struct:可以通过struct.key来获取值,并且struct也可以存不同种类型的数据

2、int,float,string...基本数据类型

 

hive的创建表:

注意要对齐否则报错

1

create table MK(

name String,

agx float,

sub array<String>,

de map<String,float>,

ad struct<street:String,city:String,zip:int>

)


row format delimited   #格式化

fields terminated by ‘\t’ #每列之间使用tab健进行分割

lines terminated by ‘\n’   #每行之间使用回车换行

stored as textfile;      #保存成textFile文件的格式

2

create table MK(

name String,

agx float,

sub array<String>,

de map<String,float>,

ad struct<street:String,city:String,zip:int>

)

row format delimited #格式化下

fields terminated by ‘|’ #每列之间用|健进行分割

collection items terminated by ‘,’ #数组集合的值用’,’进行分割

map keys terminated by ‘:’ #map集合的key:value用’:’进行分割

lines terminated by ‘\n’ #每行之间用回车进行分割

stored as textfile #保存成textFile文件的格式

location ‘/data’    #保存到该目录中,不保存到默认的	目录中

原始数据data.txt

wang|123|a1,a2,a3|:1,:2|s1,s2,s3

将本地数据加载到hive的表中:

load data local inpath ‘/~/~/~/data.txt’ overwrite into table 表名;

overwrite :如果不加覆盖就是将数据在后面进行追加

    

创建表举例:

 一、
data.txt中的数据
1,xiaoMing,book-tv-code,beijing:chaoYang-shanghai:puDong
2,leiLei,book-code,huoXing:xxx-shanghai:puDong
3,fangFang,leiLei-shop,huoXing:xxx

二、
我的原始数据是上面的格式,此时我根据数据建立合适的表
create table psn1(
id int,
name String,
likes Array<String>,
address Map<String,String>
)
row format delimited
fields terminated by ‘,’              //我们将上面的原始数据按照','进行分割,分成4个字段
collection items terminated by ‘-’ //我们将上面的第3个字段定义成了数组,因此要对该数组进行分割
map keys terminated by ‘:’         //我们将上面的第4个字段定义成了Map,因此要对Map进行分割

三、
此时我将原始数据导入进表格中:
load data local inpath '/home/data' overwrite into table psn1;

四、
再查询select * from psn1,可以发现是这样的格式了

1       xiaoMing        ["book","tv","code"]    {"beijing":"chaoYang","shanghai":"puDong"}
2       leiLei  ["book","code"] {"huoXing":"xxx","shanghai":"puDong"}
3       fangFang        ["leiLei","shop"]       {"huoXing":"xxx"}

 

创建表的其他方式:

1

create table 表名1  like  表名2

意思是我创建一张表1,里面的字段,字段类型都与表名2是一样的,但是没有数据

2

create table 表名1  as  select  name,address  from 表名2;

表示我创建一张表1,里面有字段nameaddress,同时也会把对应的数据传到表1  

 

查看表的信息:

desc 表名

desc formatted 表名:可以查看表的详细信息

 

外部表与内部表的区别:

创建外部表需要使用关键字:external (外部表删除后,在hdfs上不会跟着删除)

内部表删除后,在hdfs上会跟随删除

 

此时我创建一个外部表:

注意:

1、创建外部表的时候一般都重新定义路径

2、删除外部表的时候,数据不会被删除

create external table 表名(

~,

~

)

location ‘/user/psn2’

 

删除表:

drop table 表名;


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值