【转】Hive的insert操作

insert 语法格式为:

1. 基本的插入语法:

insert overwrite table tablename [partition(partcol1=val1,partclo2=val2)] select_statement;

insert into table tablename [partition(partcol1=val1,partclo2=val2)] select_statement;

eg:

insert overwrite table test_insert select * from test_table;
insert into table test_insert select * from test_table;

注:
overwrite重写,into追加。

2. 对多个表进行插入操作:

from source_table
insert overwrite table tablename1 [partition (partcol1=val1,partclo2=val2)] select_statement1
insert overwrite table tablename2 [partition (partcol1=val1,partclo2=val2)] select_statement2

eg:

from test_table                     
insert overwrite table test_insert1 
select key
insert overwrite table test_insert2
select value;

注:hive不支持用insert语句一条一条的进行插入操作,也不支持update操作。数据是以load的方式加载到建立好的表中,数据一旦导入就不可以修改。

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

insert overwrite [local] directory ‘directory‘ select_statement;

eg:

(1)导入数据到本地目录:

insert overwrite local directory ‘/home/hadoop/data‘ select * from test_insert1;

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

只能用overwrite,into错误!

(2)导出数据到HDFS中:

insert overwrite directory ‘/user/hive/warehouse/table‘ select value from test_table;
只能用overwrite,into错误!

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

from source_table
insert overwrite local directory ‘/home/hadoop/data‘ select * 
insert overwrite directory ‘/user/hive/warehouse/table‘ select value;

3. 小结:

(1)insert命令主要用于将hive中的数据导出,导出的目的地可以是hdfs或本地filesysytem,导入什么数据在于书写的select语句。

(2)overwrite与into:

insert overwrite/into table 可以搭配;

insert overwrite directory 可以搭配;

时间: 2024-10-19 16:26:34

【转】Hive的insert操作的相关文章

Hive最新数据操作详解(超级详细)

 数据操作能力是大数据分析至关重要的能力.数据操作主要包括:更改(exchange),移动(moving),排序(sorting),转换(transforming).Hive提供了诸多查询语句,关键字,操作和方法来进行数据操作. 一. 数据更改 数据更改主要包括:LOAD, INSERT, IMPORT, and EXPORT 1. LOAD DATA load关键字的作用是将数据移动到hive中.如果是从HDFS加载数据,则加载成功后会删除源数据:如果是从本地加载,则加载成功后不会删除源数

Hive基础之Hive表常用操作

本案例使用的数据均来源于Oracle自带的emp和dept表 创建表 语法: CREATE [EXTERNAL] TABLE [IF NOT EXISTS] [db_name.]table_name [(col_name data_type [COMMENT col_comment], ...)] [COMMENT table_comment] [PARTITIONED BY (col_name data_type [COMMENT col_comment], ...)] [CLUSTERED

Hive Shell常用操作

1.本文命令的两种模式: 交互模式,即hive的shell环境:hive > …. 非交互模式:普通的Linux命令模式:%..... 2.Hive Shell常用操作 1) hive -e:从命令行执行指定的HQL,不需要分号: % hive -e 'select * from dummy' > a.txt 2) hive –f: 执行HQL脚本 % hive -f /home/my/hive-script.sql 3) hive -i:在进入交互模式之前,执行初始化sql文件 % hive

veridata实验举例(3)验证veridata查找出insert操作导致的不同步现象

veridata实验举例(3)验证veridata查找出insert操作导致的不同步现象 续接:<veridata实验举例(2)验证表BONUS与表SALGRADE两节点同步情况>,地址:点击打开链接 环境: Item Source System Target System Platform Red Hat Enterprise Linux Server release 5.4 Red Hat Enterprise Linux Server release 5.4 Hostname gc1 g

MyBatis insert操作返回主键

在写毕业设计的时候总是发现有一些小的细节问题,比如说...... MyBatis insert操作后怎么返回主键? 原来不懂的时候是调用一个select语句,将刚刚insert的对象再传入进去查出主键,但是这么写主键就没有意义了,什么都可以放到数据库里面去查. 在说,这样也会引起很多其他的问题.比如说你要查一下post表,在你不知道post_id的情况下你利用了post_name去查询post对象. 万一post_name有重复的呢?怎么办?所以有了这篇博客. 网上有很多大神写了很多mybati

IBatisNet:让insert操作返回新增记录的主键值

项目引用ibatis包: IBatisNet.Common.dll --文件版本1.6.2.0 IBatisNet.DataAccess.dll IBatisNet.DataMapper.dll 项目目录结构: 项目中使用ibatis做数据访问层已经有好长时间了.开发小组成员反映ibatis的insert操作返回的结果是null,这一点很是不爽. 其实,大家都是希望能够把新增记录的主键值返回出来. 上上周,大家有反编译ibatis的包,查看其实现原理,后来,又尝试其他方法,都没能给实现这个功能.

MyBatis魔法堂:Insert操作详解

一.前言 数据库操作怎能少了INSERT操作呢?下面记录MyBatis关于INSERT操作的笔记,以便日后查阅. 二. insert元素 属性详解 其属性如下: parameterType:入参的全限定类名或类型别名 keyColumn:设置数据表自动生成的主键名.对特定数据库(如PostgreSQL),若自动生成的主键不是第一个字段则必须设置 keyProperty :默认值unset,用于设置getGeneratedKeys方法或selectKey子元素返回值将赋值到领域模型的哪个属性中 u

高级dml操作,insert操作

drop table e1 purge; drop table e2 purge; create table e1 as select ename,sal,hiredate from emp where 9=0; create table e2 as select ename,deptno,mgr from emp where 9=0; insert all into e1 values(ename,sal,hiredate) into e2 values(ename,depno,mgr) se

MyBatis魔法堂:Insert操作详解(返回主键、批量插入)

一.前言    数据库操作怎能少了INSERT操作呢?下面记录MyBatis关于INSERT操作的笔记,以便日后查阅. 二. insert元素 属性详解   其属性如下: parameterType ,入参的全限定类名或类型别名 keyColumn ,设置数据表自动生成的主键名.对特定数据库(如PostgreSQL),若自动生成的主键不是第一个字段则必须设置 keyProperty ,默认值unset,用于设置getGeneratedKeys方法或selectKey子元素返回值将赋值到领域模型的