> 文章列表 > Hive表操作

Hive表操作

Hive表操作

插入数据sql、导出数据sql
    1.insert 语法格式为:
    基本的插入语法:
   

 INSERT OVERWRITE TABLE tablename [PARTITON(partcol1=val1,partclo2=val2)]select_statement FROM from_statementinsert overwrite table test_insert select * from test_table;

    对多个表进行插入操作:
   

 FROM fromstatteINSERT OVERWRITE TABLE tablename1 [PARTITON(partcol1=val1,partclo2=val2)]select_statement1INSERT OVERWRITE TABLE tablename2 [PARTITON(partcol1=val1,partclo2=val2)]select_statement2from test_table                     insert overwrite table test_insert1 select keyinsert overwrite table test_insert2select value;

    insert的时候,from子句即可以放在select 子句后面,也可以放在 insert子句前面。
    hive不支持用insert语句一条一条的进行插入操作,也不支持update操作。数据是以load的方式加载到建立好的表中。数据一旦导入就不可以修改。

    2.通过查询将数据保存到filesystem
 

   INSERT OVERWRITE [LOCAL] DIRECTORY directory SELECT.... FROM .....

    导入数据到本地目录:
   

insert overwrite local directory '/home/tt/hive' select * from test_insert1;

    产生的文件会覆盖指定目录中的其他文件,即将目录中已经存在的文件进行删除。

    导出数据到HDFS中:
   

 insert overwrite directory '/user/tt/export_test' select value from test_table;

    同一个查询结果可以同时插入到多个表或者多个目录中:
   

 from test_insert1insert overwrite local directory '/home/tt/hive' select * insert overwrite directory '/user/tt/export_test' select value;

 创建表sql

create table vt_test (id String,cc decimal(20,0))
ROW FORMAT DELIMITED
FIELDS TERMINATED BY '|';INSERT INTO TABLE vt_test select 2,1234567890123456 from dual;
select * from vt_test;ROW FORMAT DELIMITED
FIELDS TERMINATED BY ‘\\t’
LINES TERMINATED BY ‘\\n’
STORED AS TEXTFILE;load data local inpath '/tmp/VT_TP_846108_inc.txt' into table vt_test;
select * from vt_test limit 5;

 空值处理

CREATE TABLE hive_tb (id int,name STRING)PARTITIONED BY ( `day` string,`type` tinyint COMMENT '0 as bid, 1 as win, 2 as ck', `hour` tinyint)ROW FORMAT DELIMITED NULL DEFINED AS '' STORED AS TEXTFILE;