Hive表操作

文章详细介绍了在Hive中使用SQL进行数据插入,包括单表插入、多表插入及批量操作,以及数据导出到本地目录和HDFS。同时提到了Hive不支持单条插入和更新操作,数据加载是通过LOADDATA实现的,并展示了创建表和处理空值的例子。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

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

    对多个表进行插入操作:
   

 FROM fromstatte
    INSERT OVERWRITE TABLE tablename1 [PARTITON(partcol1=val1,partclo2=val2)]select_statement1
    INSERT OVERWRITE TABLE tablename2 [PARTITON(partcol1=val1,partclo2=val2)]select_statement2

    from test_table                     
    insert overwrite table test_insert1 
    select key
    insert overwrite table test_insert2
    select 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_insert1
    insert 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;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

老罗技术

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值