大数据

Hive【基础01】| Hive命令行数据库和表操作

2019-02-20  本文已影响0人  Ada54

一、数据库操作

1. 显示所有数据库

2. 查看数据库信息

3. 新增数据库

4. 显示出当前使用的数据库

5. 切换当前数据库

6. 删除数据库

二、表操作

1. 显示当前数据库中所有的表

2. 新增表 - 直接建表 - 查询建表 - Like 建表

3. 查询表结构信息

4. 加载数据

5. 删除表

(注:使用命令行时,每次操作语句都要以 ; 结尾)


一、数据库操作

1. 显示所有数据库

     模糊查找数据库

2. 查看数据库信息

   查看在 hdfs 上数据库的位置和读写权限

3. 新增数据库

4. 显示出当前使用的数据库

5. 切换当前数据库

6. 删除数据库

    数据库中若有表,则不能删除

    若想删除,使用命令:drop database if exists testdb1 cascade;

    注:hive中是不能对数据库进行修改的,数据库的名称或存储路径都不能修改

二、表操作(updating)

1. 显示当前数据库中所有的表

2. 新增表

- 直接建表

- 查询建表

- Like 建表

(1) 直接建表

    语法  ( “  []  ” 为可选,“ | ” 为二选一 )

    CREATE  [TEMPORARY] [EXTERNAL]  TABLE  [IF NOT EXISTS] [db_name.]      

    table_name 

    [  (col_name   data_type [ COMMENT col_comment ], ...]   // COMMENT 备注字段

    [  COMMENT table_comment  ]  

    [  PARTITIONED BY (col_name data_type [COMMENT col_comment], ...)  ]

    // PARTITIONED 分区,表中的一个 Partition 对应于表下的一个目录

    // 辅助查询,缩小查询范围,加快数据的检索速度

    [  CLUSTERED BY (col_name, col_name, ...) [SORTED BY (col_name [ASC|DESC], ...)

    ]   INTO num_buckets BUCKETS ]

    // CLUSTERED 分桶,将一个列名下的数据切分为一组桶

    [ SKEWED BY (col_name, col_name, ...)    

    ON ((col_value, col_value, ...), (col_value, col_value, ...), ...)

    [ STORED AS DIRECTORIES ]

    // SKEWED 倾斜的列名和值, 记录这些倾斜的列名和值,在join时能够进行优化

    // STORED AS DIRECTORIES 可选,它指定了使用列表桶

    [

       [ ROW FORMAT row_format] DELIMITED

          // 指明文件的间隔符          

            [ FIELDS TERMINATED BY char ]   // 列分割,一般用 ‘ \t ’        

            [ COLLECTION ITEMS TERMINATED BY char ]  // 集合      

            [ MAP KEYS TERMINATED BY char ]  // 键值对

            [ LINES TERMINATED BY char ]   // 行分割,用 ‘ \n ’

       [ STORED AS file_format]  //表数据的存储格式,默认为 textfile

          | STORED BY 'storage.handler.class.name' [WITH SERDEPROPERTIES (...)]

    ]

   [ LOCATION hdfs_path ]  //  可定义表存储的位置

   [ TBLPROPERTIES (property_name=property_value, ...)]   // 可定义表的属性,表的创建 者、创建时间等

   [ AS select_statement]; 

   1)新增内部表

  2)新增外部表

在建表时添加  external 修饰

内部表和外部表的区别:

- 内部表数据由Hive自身管理,外部表数据由HDFS管理

- 删除内部表,会删除元数据库中的元数据和hdfs上的数据

  删除外部表,只删除元数据中的元数据

注:建议使用外部表,但如果文件权限配置合理,内部表外部表无所谓,可以通过hive+sentry来给不同用户配置权限

3. 查询表结构信息

    desc table_name;

    desc extended table_name;

    desc formatted table_name;

(2)查询建表

(3)Like 建表

4. 加载数据

step1:准备数据

根据 t1 表结构,在 /opt/data/hivedatas 目录下创建文件 t1.txt

填写以下信息:

1   王五   看书-看电影-编程   北京:朝阳区

2   牛六   看书-编程   台湾:台北

3   赵七   听音乐-看书   福建:宁德

step2:装载数据

之前使用 MySQL,我们用 insert 语句插入数据

在Hive中,因为需要装载大量数据,一般使用 load data 语句插入数据

加载数据有两种方法:一种是从本地文件系统,第二种是从Hadoop文件系统

语法

LOAD  DATA  [LOCAL]  INPATH  'filepath'  [OVERWRITE]  INTO TABLE  tablename

[ PARTITION (partcol1=val1, partcol2=val2 ...) ]

// LOCAL 指定本地路径,不写则为hdfs的文件

// OVERWRITE  覆盖表中的数据,不写则不会覆盖

// PARTITION  指定分区,可选

5. 删除表

参考链接:https://blog.csdn.net/u010708577/article/details/79158358

                  https://blog.csdn.net/l1028386804/article/details/80547441

                  实战例子:https://blog.csdn.net/qq_41934990/article/details/81903963

                                    https://blog.csdn.net/Thomson617/article/details/83212338

上一篇 下一篇

猜你喜欢

热点阅读