Hive数据定义语言-DDL-常用操作命令(数据库操作、表操作、分区操作、show语法)

1. 数据库操作

整体概述

  • 在Hive中,DATABASE的概念和RDBMS中类似,称之为数据库,DATABASE和SCHEMA是可以互换的,都可以使用。
  • 默认的数据库叫做default,存储数据位置位于/user/hive/warehouse下。
  • 用户自己创建的数据库存储位置是/user/hive/warehouse/database_name.db下。

1.1 creat database

create database 用于创建新的数据库

  • COMMENT:数据库的注释说明语句
  • LOCATION:指定数据库在HDFS存储位置
  • WITH DBPROPERTIES:用于指定一些数据库的属性配置
create (database|schema)[if not exists] database_name
[comment database_comment]
[location hdfs_path]
[with dbproperties(property_name=property_value,...)];

实例:创建数据库kox2102

create database if not exists kox2102
comment "this is my db"
with dbproperties ('createdBY'='Allen');

1.2 describe database

  • 显示Hive中数据库的名称,注释及其在文件系统上的位置信息。
  • EXTENDED关键字用于显示更多信息。可以将关键字describe简写成desc使用。
describe database [EXTENDED] db_name;

1.3 use database

  • 选定指定数据库(kox2102)
use kox2001;

1.4 drop database

  • 删除数据库
  • 默认行为是RESTRICT,意味着仅在数据库为空时才删除它。
  • 要删除带有表的数据库,使用CASCADE。
drop database database_name [RESTRICT|CASCADE];

1.5 alter database

  • 更改与Hive中的数据库相关联的元数据
-- 更改数据库属性
alter database database_name SET DBPROPERTIES (property_name=property_value,...);
-- 更改数据库所有者
alter database database_name SET OWNER USER userl
-- 更改数据库位置
alter database database_name SET LOCATION hdfs_path;

2. 表操作

整体概述

  • Hive中针对表的DDL操作可以说是DDL中的核心操作,包括建表、修改表、删除表、描述表元素数据信息。
  • 其中以建表语句为核心中的核心

2.1 describe table

  • 显示Hive中表的元数据信息
  • 如果指定了EXTENDED关键字,则它将以Thrift序列化形式显示表的所有元数据。
  • 如果指定FORMATTED关键字,则它将以表格格式显示元数据。

2.2 drop table

  • 删除该表的元数据和数据
drop table table_name;

2.3 truncate table

  • 从表中删除所有行
truncate table_name;

2.4 alter table

-- 更改表名
alter table table_name RENAME TO new_table_name;
-- 更改表属性
alter table table_name SET TBLPROPERTIES (property_name = property_value,...);
-- 更改表注释
alter table table_name SET TBLPROPERTIES ('comment' = 'new comment for student table');
-- 更改SerDe属性
alter table table_name SET SERDE serde_class_name [WITH SERDEPROPERTIES(property_name = property_value,...)];
alter table table_name [PARTITION partition_spec] SET SERDEPROPERTIES serde_properties;
alter table table_name SET SERDEPROPERTIES('field.delim' = ',');
-- 移除SerDe属性
alter table table_name [PARTITION partition_spec] UNSET SERDEPROPERTIES (property_name,...);
-- 更改表的文件存储格式 该操作仅更改表元数据,现有数据的任何转换都必须在Hive之外进行。
alter table table_name SET FILEFORMAT file_format;
-- 更改表的存储位置路径
alter table table_name SET LOCATION "new location";

-- 更改列名称/类型/位置/注释
create table test_change (a int, b int, c int);
-- a 列名修改为a1
alter table test_change CHANGE a a1 int;
-- a1列名改为a2,并将类型改为string,放在b列后面
alter table test_change CHANGE a1 a2 STRING AFTER b;
-- c列改为c1,并放在列首
alter table test_change CHANGE c c1 int FIRST;
--注释
alter table test_chage CHANGE a1 a1 int comment 'this is column a1';

-- 添加替换列
alter table table_name ADD|REPLACE COLUMNS (col_name data_type,...);

3. 分区操作

整体概述

  • Hive中针对分区Partition的操作主要包括:增加分区、删除分区、重命名分区、修复分区、修改分区。

3.1 add partition

  • ADD PARTITION会更改表元数据,但不会加载数据。如果分区位置中不存在数据,查询时将不会返回结果。
  • 因此需要保证增加的分区位置路径下,数据已经存在,或者增加完分区之后导入分区数据。
-- 一次添加一个分区
alter table table_name ADD PARTITION (dt='20170101') location '/user/hadoop/warehouse/table_name/dt=20170101';
-- 一次添加多个分区
alter table table_name ADD PARTITION (dt='2008-08-08',country='us') location '/path/to/us/part080808' PARTITION (dt='2008-08-09',country='us') location '/path/to/us/part080809';

3.2 rename partition

-- 重命名分区
alter table table_name PARTITION partition_spec RENAME TO PARTITION partition_spec;
alter table table_name PARTITION (dt='2008-08-09') RENAME TO PARTITION (dt='20080809');

3.3 delete partition

  • 删除表的分区。这将删除该分区的数据和元数据。
-- 删除分区
alter table table_name DROP [IF EXISTS] PARTITION (dt='20080-08-08',country='us');
alter table table_name DROP [IF EXISTS] PARTITION (dt='2008-08-08',coountry='us')PURGE--直接删除

3.4 alter partition

-- 修改分区
alter table table_name PARTITION (dt='2008-08-09')SET FILEFORMAT file_format;
-- 更改分区位置
alter table table_name PARTITION (dt='2008-08-09')SET LOCATION 'new location';

4. show语法

整体概述

  • Show相关的语句提供了一种查询
-- 显示所有数据库 SCHEMAS 和 DATABASES的用法 功能一样
show database;
show schemas;
-- 显示当前数据库所有表/视图/物化视图/分区/索引
show tables;
SHOW TABLES [IN database_name]; --指定某个数据库
-- 显示当前数据库下所有视图
Show Views;
SHOW VIEWS 'test_*' --显示所有与test_相关的
SHOW VIEWS FROM test1; --显示test1
SHOW VIEWS [IN/FROM database_name];
-- 显示当前数据库下所有物化视图
SHOW MATERIALIZED VIEWS [IF/FROM database_name];
-- 显示表分区信息,分区按字母顺序列出,不是分区表执行该语句会报错
show partitions table_name;
-- 显示表/分区的扩展信息
SHOW TABLE EXTENDED [IN|FROM database_name] LIKE table_name;
show table extended like student;
-- 显示表的属性信息
SHOW TBLPROPERTIES table_name;
show tbproperties student;
-- 显示表、视图的创建语言
SHOW CREATE TABLE ([db_name]table_name|view_name);
show create table student;
-- 显示表中的所有列,包括分区列
SHOW COLUMNS (FROM|IN) table_name [(FROM|IN)db_name];
show columns in student;
-- 显示当前支持的所有自定义和内置函数
show functions;
-- 查看表信息
desc extended table_name;
-- 查看数据库相关信息
describe database database_name;

你可能感兴趣的:(大数据,Hive,数据库,hive,大数据)