zoukankan      html  css  js  c++  java
  • Hive导入数据

    1.导入数据

    除了前面使用Load Data方式把文件复制或移动到表的目录外,还有以下几种方式:

    1). Insert Overwrite / Into Table 

    hive> insert overwrite table school     
        > select age,name from student;

     2). 对于分区的表,可以使用Partition子句来指明数据要插入哪个分区:

      注意:对于查询出的值不满足分区表列的类型,则会插入NULL

    insert overwrite table logs
        partition(date='2015-01-01',country='CN')
        select name,age
        from student;

    3) [动态分区插入]可以在Select语句中通过使用分区值来动态指明分区 

    //必须指定,不然报错
    set hive.exec.dynamic.partition.mode=nonstrict;


    INSERT
    OVERWRITE TABLE target PARTITION (dt) select col1,col2,dt from source;

    4) 当前Hive不支持insert into table T_Name values(v_2,v_2); 但可以使用下面语句达到此效果

    from stu
    insert into table stu
    select 99,'lisi',2
    limit 1;

    2.多表插入

      在HQL中,可以把Insert语句倒过来,把From子句放在最前面,查询的效果是一样的:

    from student
        insert overwrite table logs
        partition(date='2015-01-01',country='CN')
        select age,name;

      可以在同一个查询中使用多个Insert子句。这种“多表插入”方法比使用多个单独的INSERT语句效率更高,因为只需要扫描一遍源表就可以生成多个不相交的输出。

    FROM records2
    
    INSERT OVERWRITE TABLE stations_by_year
    SELECT year,COUNT(DISTINCT station)
             GROUP BY year
    
    INSERT OVERWRITE TABLE records_by_year
    SELECT year,COUNT(1)
             GROUP BY year
    
    INSERT OVERWRITE TABLE good_redcords_by_year
    SELECT year,COUNT(1)
                 WHERE temperature !=9999
                    AND (quality=0 OR quality=1 OR quality=4 OR quality=5 OR quality=9)
                GROUP BY year;

    这里只有一个源表(records2),但有三个表用于存放针对源表的三种不同查询所生成的结果。 

    3.Create Table … Aa Select

    • 把Hive查询的输出结果存放到一个新的表往往非常方便,这是因为输出结果太多,不适宜显示在控制台上或基于输出结果还有其他后续处理。新表的列定义是从Select 子句所检索的列导出的。
    • CTAS (Create Table ... As Select的简称) 操作是原子的,因此如果Select查询由于某种原因失败,是不会创建新表的。
    • hive的跨数据库查询和普通关系型数据库一样,database.T_Name(default.logs)。
    • 下面语句:logs是分区表,而新cteate的是普通表。  
    hive> create table t081901       
        > as                         
        > select * from default.logs; 
  • 相关阅读:
    SQL学习
    FOR XML PATH
    IOS学习网址
    weak nonatomic strong等介绍(ios)
    UVALive3045 POJ2000 ZOJ2345 Gold Coins
    UVA713 UVALive5539 POJ1504 ZOJ2001 Adding Reversed Numbers
    UVA713 UVALive5539 POJ1504 ZOJ2001 Adding Reversed Numbers
    UVA439 POJ2243 HDU1372 ZOJ1091 Knight Moves【BFS】
    UVA439 POJ2243 HDU1372 ZOJ1091 Knight Moves【BFS】
    UVA10905 Children's Game
  • 原文地址:https://www.cnblogs.com/skyl/p/4736634.html
Copyright © 2011-2022 走看看