创建数据库
数据库的创建
# 直接创建 数据库默认在 HDFS的 /user/hive/warehouse 里面 create database hive_db; # 指定数据存放的位置 路径会在 HDFS 上 # 注意路径最后要加上库名,不然HDFS上无法查看到创建的库文件 create database hive_db location '/hive/hive_db.db' # if not exists 判断是否存在,为了避免报错 create database if not exists hive;
数据库的查询
显示数据库
show databases;
模糊查询
show databases like 'hiv*';
查询数据库的信息
hive> desc database hive_db; OK hive_db hdfs://192.168.176.65:9000/hive/hive.db root USER Time taken: 0.019 seconds, Fetched: 1 row(s) # 可加一个参数 extended ,查看详细信息 # hive> desc database extended hive_db;
数据库的修改
说是修改,其实只能增加数据库的额外属性,只要数据库创建好,使用 desc 查询出来的都不能改
# dbproperties() 里的额外属性可以自己定义 hive> alter database hive_db set dbproperties('Ctime'='2020.6.16'); OK Time taken: 0.132 seconds # 创建的额外属性 必须加 extended 才能查询出来 hive> desc database extended hive_db; OK hive_db hdfs://192.168.176.65:9000/hive/hive.db root USER {Ctime=2020.6.16} Time taken: 0.016 seconds, Fetched: 1 row(s)
数据库删除
删除空的数据库
drop database 数据库名;
删除不为空的数据库(联动删除)(强制删除)
drop database 数据库名 cascade;
表的操作
创建表
完整的创表语法格式
CREATE [EXTERNAL] TABLE [IF NOT EXISTS] table_name [(col_name data_type [COMMENT col_comment], ...)] [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] [ROW FORMAT row_format] [STORED AS file_format] [LOCATION hdfs_path]
精简入门格式
# 指定 创表 表名 CREATE [EXTERNAL] TABLE [IF NOT EXISTS] table_name # 创字段 [(col_name data_type [COMMENT col_comment], ...)] # 分隔符 [ROW FORMAT row_format]
字段说明
- CREATE TABLE :创建一个指定名字的表,如果名相同,这会抛出一个异常
- [EXTERNAL] :可以创建一个外部表,在建表的同时指定一个实际的路径(LOCATION),
Hive在创建内部表时,会将数据 移动 到Hive指定的路径,若创建外部表,仅记录数据所在的路径,不对数据的位置做任何改变。
在删除数据的时候,内部表的元数据和数据会一起删除,而外部表只删除元数据,不删除数据。- [COMMENT] :为表的字段添加注释
- [ROW FORMAT] :指定分隔符。比如
row format delimited fields terminated by "\t";
修改表
修改表名
# 格式 alter table 旧表名 rename to 新表名; hive> alter table hive_db rename to test_db; OK Time taken: 0.237 seconds
表的列操作
修改列名
只能一列一列的修改
alter table 表名 change column 旧列名 新列名 新列类型; hive> alter table test_db change column id db_id int; OK Time taken: 0.239 seconds
添加、替换列名
可以几列同时操作
# 添加列名 alter table 表名 add columns (列名 类型, 列名 类型); hive> alter table test_db add columns (addr string, age int); OK Time taken: 0.211 seconds # 替换列名 替换列名 是把表原来的所有列都替换了 留下替换语句指定的列名 alter table 表名 replace columns (列名 类型, 列名 类型) hive> alter table test_db replace columns (id int, year int); OK Time taken: 0.267 seconds ## 查看表的结构 只留下了替换语句的字段 hive> desc test_db; OK id int year int mouth string # 分区字段 # Partition Information # col_name data_type comment mouth string Time taken: 0.048 seconds, Fetched: 8 row(s)
增加、删除 表的分区
# 增加表的分区 alter table 表名 add partition(指定分区字段) hive> alter table test_db add partition(mouth="04"); OK Time taken: 0.225 seconds # 删除表的分区 alter table 表名 drop partition(指定分区字段) hive> alter table test_db drop partition(mouth="04"); Dropped the partition mouth=04 OK Time taken: 0.312 seconds
删除表
语法:drop table 表名
hive> drop table test_db; OK Time taken: 0.439 seconds
版权声明:《 Hive DDL操作(数据库,表的创,删...操作,不涉及表的内容) 》为明妃原创文章,转载请注明出处!
最后编辑:2020-1-8 07:01:16