HIVE基础表操作

一,建表&修改表(DDL)

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]
           | STORED BY 'storage.handler.class.name' [ WITH SERDEPROPERTIES (...) ] 
        ]
          [LOCATION hdfs_path]
          [TBLPROPERTIES (property_name=property_value, ...)]  
          [AS select_statement] 

  
使用LIKE关键字创建一个与已有表模式相同的新表:
 CREATE [EXTERNAL] TABLE [IF NOT EXISTS] [db_name.]table_name
  LIKE existing_table_or_view_name
  [LOCATION hdfs_path]

 表重命名

ALTER TABLE table_name RENAME TO new_table_name
执行前需要先切换数据库,执行此命令在表名前加数据库名会报错。

添加分区

ALTER TABLE table_name ADD [IF NOT EXISTS] PARTITION (partition_col = partition_col_value[, partition_col = partiton_col_value, ...])
执行前需要先切换数据库,执行此命令在表名前加数据库名会报错。
外部表添加分区时需要加上location关键字,指定分区所在目录。

分区重命名

ALTER TABLE table_name PARTITION (partition_col = partition_col_value...) RENAME TO PARTITION (partition_col = partition_col_value...)
执行前需要先切换数据库,执行此命令在表名前加数据库名会报错。

删除分区

ALTER TABLE table_name DROP [IF EXISTS] PARTITION (partition_col = partition_col_value...)
执行前需要先切换数据库,执行此命令在表名前加数据库名会报错

修改列

(1)修改列名/类型/位置/注释
ALTER TABLE table_name CHANGE [COLUMN] col_old_name col_new_name column_type [COMMENT col_comment] [FIRST|AFTER column_name]
(2)新增/替换列/删除某一列(增加的列默认放在最后面)
ALTER TABLE table_name ADD|REPLACE COLUMNS (col_name data_type [COMMENT col_comment], ...)
 

SHOW语句

(1)列出数据库:SHOW DATABASES;
(2)列出某数据库中所有表:SHOW TABLES [IN database_name];
(3)查看建表语句:SHOW CREATE TABLE ([db_name.]table_name);
(4)列出某表中所有分区:SHOW PARTITIONS table_name;
(5)列出所有函数:SHOW FUNCTIONS;

DESCRIBE语句

(1)显示数据库定义:DESCRIBE DATABASE db_name;
(2)显示表结构:DESCRIBE table_name;

二,数据操纵语言(DML)

加载文件入表

load data [local] inpath "file_path" into table tablename [partition(partition_column1 = value1 [,partition_column1 = value1...])]
包含local关键字则从本地文件系统加载文件入表,否则从hdfs加载文件入表。

查询结果插入表

insert into/overwrite table tablename [partition(partition_column1 = value1 [,partition_column1 = value1...])] SELECT ... FROM ...
关键字into 与overwrite的区别:使用overwrite会覆盖原表(分区)数据。

查询结果写文件系统

INSERT OVERWRITE [LOCAL] DIRECTORY directory1 SELECT ... FROM ...
使用这种方式可从表里查询需要的数据写入本地文件系统或hdfs的文件里。

Union

select_statement UNION ALL select_statement UNION ALL select_statement ...
将多个查询结果合并到一个结果集中,每个select_statement的列个数以及名字必须保持相同,且需加个别名。
Hive0.13版本以前不支持where子句中的子查询,它只允许子查询出现在SELECT语句的FROM子句中,SQL常用的exist/in子句需要改写。

hive在0.13版本后已经支持in和not in子查询

猜你喜欢

转载自blog.csdn.net/weixin_42553458/article/details/81002728