总结: HQL语句
- Part1 数据库的操作
- Part2 数据表的操作
- 1. 创建普通表
- 2. 内外部表
- 3. 内外部表转换
Part1 数据库的操作
查看数据库:
show databases;
创建数据库:create database if not exists 数据库名
使用数据库:use 数据库名;
查看数据库详细信息:desc database 数据库名
创建数据库并指定HDFS的存储路径:create database 数据库名 location 'HDFS path'
删除空的数据库:drop database 数据库名
强制删除数据库:drop database 数据库名 cascade
Part2 数据表的操作
1. 创建普通表
create table 表名(
列名 类型
id int,
name string
....
)
删除表 :
drop table 表名;
2. 内外部表
1. 内部表
CREATE table mytest.stu1(
id int,
name string,
gender string
) row format delimited fields terminated by '\t';
外部表
- 在Linux上创建新文件,test_external.txt,并填入如下内容
**两种方式 - 方式1 **
先创建外部表,然后移动数据
到LOCATION目录
- 首先检查:hadoop fs -ls /tmp,确认不存在/tmp/test_ext1目录
- 创建外部表:create
external
table test_ext1(id int, name string) row format delimited fields terminated by ‘\t’ location ‘/tmp/test_ext1’;- 可以看到,目录/tmp/test_ext1被创建
- select * from test_ext1,空结果,无数据
- 上传数据: hadoop fs -put test_external.txt /tmp/test_ext1/
- select * from test_ext1,即可看到数据结果
两种方式 - 方式2
先存在数据,后创建外部表
- hadoop fs -mkdir /tmp/test_ext2
- hadoop fs -put test_external.txt /tmp/test_ext2/
- create external table test_ext2(id int, name string) row format delimited fields terminated by ‘\t’ location ‘/tmp/test_ext2’;
- select * from test_ext2;
3. 内外部表转换
查看表类型: desc formatted 表名
- 内部表转外部表
alter table stu set tblproperties(‘EXTERNAL’=‘TRUE’);- 外部表转内部表
alter table stu set tblproperties(‘EXTERNAL’=‘FALSE’);
要注意:('EXTERNAL'='FALSE') 或 ('EXTERNAL'='TRUE')为固定写法,区分大小写!!!