规则语法

大小写规则:

1. hive的数据库名、表名都不区分大小写
2. 建议关键字大写

命名规则

1. 名字不能使用数字开头
2. 不能使用关键字
3. 尽量不使用特殊符号

库操作语法

创建数据库

创建数据库的本质就是在hive的参数${hive.metastore.warehouse.dir}对应的目录下,创建一个新的目录,此目录的名称为: 库名.db

注意:在创建库或者表时除了创建目录外,还会在mysql中(元数据库),添加元数据(描述信息)

hive> create database zoo;
hive> create database if not exists zoo;
hive> create database if not exists qfdb comment 'this is a database of mine';

hive有一个默认的数据库default,如果不明确的说明要使用哪个库,则使用默认数据库。

查看所有数据库

语法:show databases;

切换数据库

语法:use mydb;

查看数据库信息

语法1:desc database databaseName;
语法2:desc database extended databaseName;
语法3:describe database extended databaseName;

** 删除数据库**

语法1:drop database databasename;           #这个只能删除空库
语法2:drop database databasename cascade;      #如果不是空库,则可以加cascade强制删除

表操作语法

数据类型

Hive的数据类型分为基本数据类型和复杂数据类型,下面是基本数据类型

其中加粗体是重点要掌握的类型

分类 类型 描述 字面量示例
基本类型 BOOLEAN true/false TRUE
TINYINT 1字节的有符号整数 -128~127 1Y
SMALLINT 2个字节的有符号整数,-32768~32767 1S
INT 4个字节的带符号整数 1
BIGINT 8字节带符号整数 1L
FLOAT 4字节单精度浮点数 1.0
DOUBLE 8字节双精度浮点数 1.0
DEICIMAL 任意精度的带符号小数 1.0
STRING 字符串,可变长度 “a”,’b’
VARCHAR 变长字符串,要设置长度 “a”,’b’
CHAR 固定长度字符串 “a”,’b’
BINARY 字节数组 无法表示
TIMESTAMP 时间戳,纳秒精度 122327493795
DATE 日期 ‘2016-03-29’
复杂类型 ARRAY 有序的的同类型的集合 array(1,2)
MAP key-value,key必须为原始类型,value可以任意类型 map(‘a’,1,’b’,2)
STRUCT 字段集合,类型可以不同 struct(‘1’,1,1.0)
UNION 在有限取值范围内的一个值 create_union(1,’a’,63)

** 创建表**

创建表的本质其实就是在对应的数据库目录下面创建一个子目录,目录名为表名。数据文件就存在这个目录下。

语法1: create table t_user(id int,name string);  语法2:使用库.表的形式create table mydb.t_user(id int,name string);语法3:指定分隔规则形式
create table if not exists t1(
uname string comment 'this is name',
chinese int,
math int,
english int
)
comment 'this is my table'
row format delimited
fields terminated by '\t'
lines terminated by '\n'
stored as textfile;

查看当前表空间中的所有表名

语法:show tables;
# 查看另外一个数据库中的表
show tables in zoo;

查看表结构

desc tableName
desc extended tableName;
describe extended tableName;

修改表结构

- 修改表名alter table oldTableName rename to newTableName;- 修改列名:change column    alter table tableName change column oldName newName colType;
- 修改字段类型:alter table tableName change column colName colName colType;- 修改列的位置:  注意,2.x版本后,必须是相同类型进行移动位置。alter table tableName change column colName colName colType after colName1;   alter table tableName change column colName colName colType first;- 增加字段:add columnsalter table tableName add columns (sex int,...);- 删除字段:replace columns #注意,2.x版本后,注意类型的问题,替换操作,其实涉及到位置的移动问题。alter table tableName replace columns(id int,name int,size int,pic string);注意:实际上是保留小括号内的字段。

删除表

drop table tableName;

扩展)建表语法

下面是一个常见的创建表的语法:

CREATE [EXTERNAL] TABLE [IF NOT EXISTS] TABLENAME(
[COLUMNNAME COLUMNTYPE [COMMENT 'COLUMN COMMENT'],...])
[COMMENT 'TABLE COMMENT']
[PARTITIONED BY (COLUMNNAME COLUMNTYPE [COMMENT 'COLUMN COMMENT'],...)]
[CLUSTERED BY (COLUMNNAME COLUMNTYPE [COMMENT 'COLUMN COMMENT'],...) [SORTED BY (COLUMNNAME [ASC|DESC])...] INTO NUM_BUCKETS BUCKETS]
[ROW FORMAT ROW_FORMAT]
[STORED AS FILEFORMAT]
[LOCATION HDFS_PATH];

如果要看完整的创建表语法,可以参考下面完整创建表语句:

CREATE [TEMPORARY] [EXTERNAL] TABLE [IF NOT EXISTS] [db_name.]table_name
-- (Note: TEMPORARY available in Hive 0.14.0 and later)[(col_name data_type [column_constraint_specification] [COMMENT col_comment], ... [constraint_specification])][COMMENT table_comment][PARTITIONED BY (col_name data_type [COMMENT col_comment], ...)][CLUSTERED BY (col_name, col_name, ...) [SORTED BY (col_name [ASC|DESC], ...)] INTO num_buckets BUCKETS][SKEWED BY (col_name, col_name, ...)     -- (Note: Available in Hive 0.10.0 and later)]
ON ((col_value, col_value, ...), (col_value, col_value, ...), ...)
[STORED AS DIRECTORIES][
[ROW FORMAT row_format]
[STORED AS file_format]
| STORED BY 'storage.handler.class.name' [WITH SERDEPROPERTIES (...)]  -- (Note: Available in Hive 0.6.0 and later)
][LOCATION hdfs_path][TBLPROPERTIES (property_name=property_value, ...)]
-- (Note: Available in Hive 0.6.0 and later)[AS select_statement];
-- (Note: Available in Hive 0.5.0 and later; not supported for external tables)

其中具体创建表的参数类型可以参考如下:

data_type: primitive_type| array_type| map_type| struct_type| union_type  -- (Note: Available in Hive 0.7.0 and later)primitive_type: TINYINT| SMALLINT| INT| BIGINT| BOOLEAN| FLOAT| DOUBLE| DOUBLE PRECISION -- (Note: Available in Hive 2.2.0 and later)| STRING| BINARY      -- (Note: Available in Hive 0.8.0 and later)| TIMESTAMP   -- (Note: Available in Hive 0.8.0 and later)| DECIMAL     -- (Note: Available in Hive 0.11.0 and later)| DECIMAL(precision, scale)  -- (Note: Available in Hive 0.13.0 and later)| DATE        -- (Note: Available in Hive 0.12.0 and later)| VARCHAR     -- (Note: Available in Hive 0.12.0 and later)| CHAR        -- (Note: Available in Hive 0.13.0 and later)array_type: ARRAY < data_type >map_type: MAP < primitive_type, data_type >struct_type: STRUCT < col_name : data_type [COMMENT col_comment], ...>union_type: UNIONTYPE < data_type, data_type, ... >  -- (Note: Available in Hive 0.7.0 and later)row_format: DELIMITED [FIELDS TERMINATED BY char [ESCAPED BY char]] [COLLECTION ITEMS TERMINATED BY char][MAP KEYS TERMINATED BY char] [LINES TERMINATED BY char][NULL DEFINED AS char]   -- (Note: Available in Hive 0.13 and later)| SERDE serde_name [WITH SERDEPROPERTIES (property_name=property_value, property_name=property_value, ...)]file_format:: SEQUENCEFILE| TEXTFILE    -- (Default, depending on hive.default.fileformat configuration)| RCFILE      -- (Note: Available in Hive 0.6.0 and later)| ORC         -- (Note: Available in Hive 0.11.0 and later)| PARQUET     -- (Note: Available in Hive 0.13.0 and later)| AVRO        -- (Note: Available in Hive 0.14.0 and later)| JSONFILE    -- (Note: Available in Hive 4.0.0 and later)| INPUTFORMAT input_format_classname OUTPUTFORMAT output_format_classnamecolumn_constraint_specification:: [ PRIMARY KEY|UNIQUE|NOT NULL|DEFAULT [default_value]|CHECK  [check_expression] ENABLE|DISABLE NOVALIDATE RELY/NORELY ]default_value:: [ LITERAL|CURRENT_USER()|CURRENT_DATE()|CURRENT_TIMESTAMP()|NULL ] constraint_specification:: [, PRIMARY KEY (col_name, ...) DISABLE NOVALIDATE RELY/NORELY ][, PRIMARY KEY (col_name, ...) DISABLE NOVALIDATE RELY/NORELY ][, CONSTRAINT constraint_name FOREIGN KEY (col_name, ...) REFERENCES table_name(col_name, ...) DISABLE NOVALIDATE [, CONSTRAINT constraint_name UNIQUE (col_name, ...) DISABLE NOVALIDATE RELY/NORELY ][, CONSTRAINT constraint_name CHECK [check_expression] ENABLE|DISABLE NOVALIDATE RELY/NORELY ]

数据导入

[root@my01 hive]# mkdir /hivedata
[root@my01 hive]# cd /hivedata
[root@my01 hive]# vi user.txt

加载数据到Hive,一般分为两种:

- 一种是从本地Linux上加载到Hive中
- 另外一种是从HDFS加载到Hive中

方法1使用hdfs dfs -put将本地文件上传到表目录下

hdfs dfs -put ./u1.txt /user/hive/warehouse/mydb1.db/u1

方法在hive中使用load 命令

load data [local] inpath '文件路径' [overwrite] into table 表名加载数据时:
1. 最好是写绝对路径,从根开始写。
2. 写相对路径也是可以的,但是一定要记住你登录hive时的位置,从当前位置写相对路径
3. ~在hive中,是相对路径的写法
4. 使用benline工具进行远程登录(客户端与服务端不在同一台机器)时,使用以下语句时:load data local inpath '文件路径' [overwrite] into table 表名会有一个大坑:local是指服务端的文件系统。

方法3从另外一张表(也可称之为备份表)中动态加载数据

insert into table tableName2 select [.....] from tableName1;扩展内容:向多张表中插入数据的语法from tableName1insert into tableName2 select * where 条件insert into tableName3 select * where 条件.....

注意: tableName2表中的字段个数必须和tableName1表中查询出来的个数相同

**方法4:**克隆表数据

- create table if not exists tableName2 as select [....] from tableName1;
- create table if not exists tableName2 like tableName1 location 'tableName1的存储目录的路径'扩展内容:只复制表结构
create table if not exists tableName2 like tableName1;

加载数据的本质

  1. 如果数据在本地,加载数据的本质就是将数据copy到hdfs上的表目录下。
  2. 如果数据在hdfs上,加载数据的本质是将数据移动到hdfs的表目录下。

注意:hive使用的是严格的读时模式:加载数据时不检查数据的完整性,读时发现数据不对则使用NULL来代替。
而mysql使用的是写时模式:在写入数据时就进行检查

Hive基本操作入门相关推荐

  1. Hive从入门到放弃——HiveQL表级别DDL设计的艺术性(五)

    HiveQL数据库中的表DDL操作   博客Hive从入门到放弃--HiveQL数据库级别DDL设计的艺术性(四)聊完了数据库的基本操作,我们再来聊聊Hive内表的操作. 创建表   官方推荐建表的结 ...

  2. Hive从入门到放弃——Hive表DML的艺术性(八)

    背 景   HiveQL语法和MySQL的语法很像,当然Hive本身作为大数据的数据仓库,本身对数据的修改和删除并不铭感,虽然Hive支持通过ORC为存储文件实现数据的删除和修改,但是这个功能相对比较 ...

  3. Hive基本操作,DDL操作(创建表,修改表,显示命令),DML操作(Load Insert Select),Hive Join,Hive Shell参数(内置运算符、内置函数)等

    1.  Hive基本操作 1.1DDL操作 1.1.1    创建表 建表语法 CREATE [EXTERNAL] TABLE [IF NOT EXISTS] table_name [(col_nam ...

  4. hadoop hive hbase 入门学习 (二)

    hadoop 自学系列                hadoop hive hbase 入门学习 (一) hadoop安装.hdfs学习及mapreduce学习 hadoop 软件下载 (hadoo ...

  5. Hive 快速入门(全面)

    转载: https://www.codercto.com/a/5110.html 前言 我写这篇文章的目的是尽可能全面地对Hive进行入门介绍,这篇文章是基于hive-1.0.0版本介绍的,这个版本的 ...

  6. Apache Hive 快速入门 (CentOS 7.3 + Hadoop-2.8 + Hive-2.1.1)

    2019独角兽企业重金招聘Python工程师标准>>> 本文节选自<Netkiller Database 手札> 第 63 章 Apache Hive 目录 63.1. ...

  7. Linux软件包管理基本操作入门

    导读 大多数现代类 Unix 操作系统都提供了一个集中的软件包管理机制,以帮助用户搜索.安装和管理软件.而软件通常以「包」的形式存储在仓库「repository」中,对软件包的使用和管理被称为包管理. ...

  8. 数据仓库—stg层_数据仓库之Hive快速入门 - 离线实时数仓架构

    数据仓库VS数据库 数据仓库的定义: 数据仓库是将多个数据源的数据经过ETL(Extract(抽取).Transform(转换).Load(加载))理之后,按照一定的主题集成起来提供决策支持和联机分析 ...

  9. ’Hive快速入门课程视频【菜鸟窝出品】

    课程背景 Hive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供简单的SQL查询功能,可以将SQL语句转换为MapReduce任务进行运行.其优点是学习成本低, ...

最新文章

  1. Linux shell只读变量
  2. 费解 | 为什么很多程序员工作时都戴耳机?
  3. liferay-ui:search-container 用法
  4. 国家自然科学基金项目经费怎么用有了新规定
  5. 在小程序中使用腾讯视频插件播放教程视频
  6. mysql 转发_【mysql】【转发】my.cnf 讲解
  7. 小世界网络——利用Networkx分析武汉公交网络
  8. WAV音乐文件无法修改标题
  9. Qt使用资源管理器打开指定本地文件夹
  10. Android性能优化之页面优化
  11. [复变函数]第24堂课 6.3 辐角原理
  12. React启动时报Plugin “react“ was conflicted between “package.json ......错误的解决办法。
  13. 倒在转“码”路上的文科生
  14. Firefox如何给页面权限
  15. prim算法之处女作
  16. 资深EMC工程师总结:EMC整改流程及常见问题
  17. PLA:从线性可分到线性不可分的演化过程
  18. 2021灾难频发,人类将来或面临8种灭绝方式,希望是第6种
  19. 如何下载Hbuilder,而不是下载Hbuilder X?
  20. SqlServer Tigger

热门文章

  1. %02 java_Java基础02—变量、运算符和数据类型转换(示例代码)
  2. sobel算子_边缘检测算法4.-教你动手实现kirsch和robinson算子
  3. linux学习笔记:磁盘格式化与磁盘检验命令
  4. java单线程共享,「Java并发编程实战」之对象的共享
  5. 生怕认可java+flatmap,RxJava 好难理解的一个 FlatMap 的例子
  6. python密码传参有特殊字符如何解决_am start的总结,-d参数的总结,以及python中传递内容包含中文及特殊字符的解决方案...
  7. android中webview使用打开系统相机录像_有没有什么高效使用微信的经验?
  8. python程序字符串中字符排序_python字符串排序方法
  9. rman一致性备份oracle数据库可以在非归档模式下么,探索ORACLE之RMAN_03一致性备份...
  10. python字典数据类型笔记_python笔记--数据类型--字典