zoukankan      html  css  js  c++  java
  • hive常用操作

    1、数据库

    1)创建数据库

     1 create database database_name; 

    2)创建一个数据库并检查是否存在,不存在才创建

     1 create databases if not exists database_name; 

    3)创建一个数据库,并加上注释

     1 create database if not exists database_name comment '这是创建数据库的备注'; 

    4)创建数据库,指定数据库在HDFS上存放的位置

     1 create database if not exists database_name location '数据库存放路径:/mnt/database_name.db'; 

    5)查看当前所用的数据库

     select current_database(); 

    2、表

    if not exists   :表示检查所创建的表或库是否存在,不存在才会创建

    row format delimited fields terminated by ','    : 表示行以 ‘,’ 进行分割

    partitioned by (data dtring)    :表示以时间进行分区

    1)创建内部表

    创建内部表,以 ',' 进行分割;

    1 create table table_name(
    2     id int,
    3     name string,
    4     age string
    5 )
    6 row format delimited fields terminated by ',';

    根据查询结果创建表,会将查询的数据放入到新表;

     1 create table table_name1 as select id, name, age from table_name2; 

    根据已经存在的表结构创建表,只是结构一样,新表无数据;

     1 create table table_name1 like table_name; 

    2)创建外部表

    1 create external table external_table_name(
    2     id int,
    3     name string,
    4     age string
    5 )
    6 row format delimited
    7 fields terminated by ',';

    向外部表中导入数据

     1 load data local inpath '/home/table_data.txt' into table external_table_name; 

    3)创建分区表

    创建分区表

    1 create external table exter_table_name(
    2     id int,
    3     name string
    4 )
    5 partitioned by (age string)    # (创建分区表)
    6 row format delimited fields terminated by ','
    7 location '/home/exter_table_name';    # (指定外部表的路径)

    创建二级分区表

    在city目录下出现data的二级目录

    1 create external table exter_table_name(id int, name string)
    2 partitioned by (city string, data string)
    3 row format delimited fields terminated by ',';

    建立分区表后,需要增加分区

    1 alter table exter_table_name add pertition(age='20')
    2 location '/home/exter_table_name_20';

    通过where快速查询

     1 select * from exter_table_name where age=20; 

    4)向表中插入数据

    原表为分区表,从其他表中导入数据,不覆盖表中的元数据

    insert into table database_name.table_name1
    partition(create_date='1990-01-01') select id, name, age from database_name.table_name2 where id > 10;

    原表为非分区表,从其他表中导入数据,覆盖表中的元数据

    insert overwrite table database_name.table_name1select id, name, age
    from database_name.table_name2
    where id > 10;

    从文件中向表批量插入数据

      load data local inpath '/root/data.txt' overwrite into table table_name;  

  • 相关阅读:
    案例分析
    阅读任务
    准备工作
    课程总结
    十三周总结
    第十二周总结
    第十一周学习总结
    第十周学习总结
    第九周课程总结&实验报告7
    第八周课程学习总结与实验6
  • 原文地址:https://www.cnblogs.com/gxfaxe/p/11631059.html
Copyright © 2011-2022 走看看