目录
HIVE基本语法
CREATE DATABASE [IF NOT EXISTS] database_name
[COMMENT database_comment]
[LOCATION hdfs_path]
[WITH DBPROPERTIES (property_name=property_value, ...)];
在对一个数据库以及表进行操作时,会有中文字符存在,所以需要先进入到mysql中将上述后续配置中修改字符集的操作执行完毕,将字符集全部改为utf8,防止中文字符无法显示。
也可以通过Navicat连接到mysql,进入到其中的hive数据库中,找到对应的表,右击设计表,将其中对应的字段的字符集改为utf8即可
数据库定义语言DDL
创建数据库
简单创建一个数据库命令:
格式1:
CREATE DATABASE [IF NOT EXISTS] 数据库名称
表示创建一个数据库,当该数据库不存在的时候创建,若存在则不创建,也可以省略该判断条件
格式2:
CREATE DATABASE [IF NOT EXISTS] database_name COMMENT "数据库注释"
表示在创建一个数据库时加入一个该数据库的注释
举例:创建一个简单的数据库my_database
加入注释创建:
查看数据库信息:
格式:
show databases;查看当前所有数据库
desc database 数据库名称
举例:查看刚加入注释创建的数据库my_database 的信息
通过查看信息可以发现该数据库的默认存放位置在hdfs上的warehouse目录下
在hdfs上创建另一个目录testDatabase
查看数据库信息的第二种格式:查看数据库详细信息,包括所配置的参数
desc database extended 数据库名称;
通过指定路径创建数据库:
将创建的数据库存放到hdfs中的testDatabase中:
格式:
CREATE DATABASE [IF NOT EXISTS] database_name COMMENT "数据库注释" LOCATION "指定路径";
举例:
查看数据库信息:
在创建数据库时还可以增加一些配置信息 :
格式:
CREATE DATABASE IF NOT EXISTS test_database2 COMMENT "测试数据库创建" WITH DBPROPERTIES("author"="作者","application"="库中所包含信息");
删除数据库:
使用格式1:
DROP DATABASE 数据库名称;
举例:
删除会报错:message:Database my_database is not empty.
格式2:(慎用)
DROP DATABASE 数据库名称 cascade;
强制删除数据库,无论其中是否为空
创建表:
创建表中有很多创建方法:
ROW FORMAT:定义创建表时表中数据的分隔符号,若表中数据与分隔符不匹配则原始数据中的所有不匹配的数据会变成新表中的一列数据,hive中默认以制表符进行分隔
LOCATION:创建表时将表存储到指定路径下
EXTERNAL:表示创建表时,以外部表的形式创建
STORED AS:用于设置数据存储格式
TBLPROPERTIES:设置配置信息
PARTITIONED BY:构建分区表,包括列名 数据类型 注释信息
删除表:
格式:
DROP TABLE 表名;
当删除表时,hdfs上对应的该表的数据内容也会被删除
查看表:
查看表的字段信息:desc 表名;
查看表的详细信息:DESC FORMATTED 表名;
各方法举例:
ROW FORMAT:
这里设置分隔符号为制表符,数据存储格式为TextFile,指定存储路径到hdfs中的/testDatabase/total_score中。
使用本地文件加载表数据内容:
load data local inpath "/usr/local/soft/hive-3.1.2/data/total_score.txt" into table filetest.total_score1;
查询表内容十行:
EXTERNAL:
若想要在删除表时,使得hdfs上对应的数据内容不被删除,仅仅删除表,可以创建一个外部表
创建一个外部表:
其余条件不变,加入一个EXTERNAL即可:
此时由于hdfs上的数据内容还未做删除操作,而该表的指定存储路径同之前的表的存储路径相同,所以创建该表后,该表自动加载其指定路径中的数据内容,不需要再重新加载数据内容。
直接查询就可以得到数据:
外部表与普通内部表的区别:外部表删除表时不会删除对应的数据 并且和表数据存储位置无关,
即当不指定数据内容存储路径时,所加载的数据内容会自动存储到默认路径中,当删除该表时,该数据内容仍然存在
STORED AS:
注意:以上创建表格式中指定存储格式为文本格式,若存储格式变为压缩格式ORC等,那么就不能直接将文本数据加载到表中
需要使用以下方式:
创建一个存储格式为ORC的表:
使用插入查询数据的方式加载数据内容:
INSERT INTO TABLE filetest.total_score3 SELECT * FROM filetest.total_score1;
查看:
另一种格式:使用查询语句创建一个新表:
查看:前五行
TBLPROPERTIES:
在创建表时加入一些配置信息
使用查看表的详细信息查看:其中application栏中可以看到配置信息:
PARTITIONED BY:
以指定字段分区保存数据
需求:将学生信息表中不同性别的学生进行分区保存
所设置的分区字段是一个单独字段:
查看字段信息:
查看数据: