linux hive insert一行,Hive基本操作

Hive DML

1、插入数据

1.1. Loading files into tables--加载本地数据到hive表

load data local inpath '/root/data/data' into table psn;--(/root/data/data指的是本地 linux目录)

--加载hdfs数据文件到hive表

load data inpath '/data/data' into table psn;--(/data/data指的是hdfs的目录)

注意:

1、load操作不会对数据做任何的转换修改操作

2、从本地linux load数据文件是复制文件的过程

3、从hdfs load数据文件是移动文件的过程

4、load操作也支持向分区表中load数据,只不过需要添加分区列的值

1.2. Insert

insert方式运行MR程序,通过程序将数据输出到表目录!

在某些场景,必须使用insert方式来导入数据:向分桶表插入数据

如果指定表中的数据,不是以纯文本形式存储,需要使用insert方式导入

语法:

insert into|overwrite table 表名 select xxx | values(),(),()

insert into: 向表中追加新的数据

insert overwrite: 先清空表中所有的数据,再向表中添加新的数据特殊情况: 多插入模式(从一张源表查询,向多个目标表插入)

from 源表

insert xxxx 目标表 select xxx

insert xxxx 目标表 select xxx

insert xxxx 目标表 select xxx

举例: from deptpart2

insert into table deptpart1 partition(area='huaxi') select deptno,dname,loc

insert into table deptpart1 partition(area='huaxinan') select deptno,dname,loc

从查询语句中获取数据插入某张表

语法:

Standard syntax:

INSERT OVERWRITE TABLE tablename1 [PARTITION (partcol1=val1, partcol2=val2 ...) [IF NOT EXISTS]] select_statement1 FROM from_statement;

INSERT INTO TABLE tablename1 [PARTITION (partcol1=val1, partcol2=val2 ...)] select_statement1 FROM from_statement;

Hive extension (multiple inserts):

FROM from_statement

INSERT OVERWRITE TABLE tablename1 [PARTITION (partcol1=val1, partcol2=val2 ...) [IF NOT EXISTS]] select_statement1

[INSERT OVERWRITE TABLE tablename2 [PARTITION ... [IF NOT EXISTS]] select_statement2]

[INSERT INTO TABLE tablename2 [PARTITION ...] select_statement2] ...;

FROM from_statement

INSERT INTO TABLE tablename1 [PARTITION (partcol1=val1, partcol2=val2 ...)] select_statement1

[INSERT INTO TABLE tablename2 [PARTITION ...] select_statement2]

[INSERT OVERWRITE TABLE tablename2 [PARTITION ... [IF NOT EXISTS]] select_statement2] ...;

Hive extension (dynamic partition inserts):

INSERT OVERWRITE TABLE tablename PARTITION (partcol1[=val1], partcol2[=val2] ...) select_statement FROM from_statement;

INSERT INTO TABLE tablename PARTITION (partcol1[=val1], partcol2[=val2] ...) select_statement FROM from_statement;

--注意:这种方式插入数据的时候需要预先创建好结果表

--从表中查询数据插入结果表INSERT OVERWRITE TABLE psn9 SELECT id,name FROM psn

--从表中获取部分列插入到新表中from psn

insert overwrite table psn9

select id,name

insert into table psn10

select id

1.3. location

在建表时,指定表的location为数据存放的目录

1.4. import

不仅可以导入数据还可以顺便导入元数据(表结构)。Import只能导入export输出的内容!IMPORT [[EXTERNAL] TABLE 表名(新表或已经存在的表) [PARTITION (part_column="value"[, ...])]]

FROM 'source_path'

[LOCATION 'import_target_path']1. 如果向一个新表中导入数据,hive会根据要导入表的元数据自动创建表

2. 如果向一个已经存在的表导入数据,在导入之前会先检查表的结构和属性是否一致

只有在表的结构和属性一致时,才会执行导入

3. 不管表是否为空,要导入的分区必须是不存在的

import external table importtable1 from '/export1'

2、DML之导出

2.1. insert

将一条sql运算的结果,插入到指定的路径语法:

insert overwrite [local] directory '/opt/module/datas/export/student'

row format xxxx

select * from student;

2.2. export

既能导出数据,还可以导出元数据(表结构)!export会在hdfs的导出目录中,生成数据和元数据!

导出的元数据是和RDMS无关!

如果是分区表,可以选择将分区表的部分分区进行导出!

语法: export table 表名 [partiton(分区信息) ] to 'hdfspath'

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值