一、向管理表中装载数据

1、向表中装载数据load

1)load语法

2)LOCAL  指的是操作系统的文件路径,否则默认为HDFS的文件路径

3)overwrite关键字

如果用户指定了overwrite关键字,那么目标文件夹中之前存在的数据将会被先删除掉。

如果指定,仅仅会把新增的文件增加到目标文件夹中,而不会删除之前的数据。

如果目标文件夹已经存在和装载的文件同名的文件,那么旧的同名文件将被覆盖写。

4)分区表

如果目标表是分区表那么需要使用partition子句,而且用户还必须为每个分区的键指定一个值

此列子,数据现在将会存放在这个文件夹中:

2、通过查询语句向表中装载数据

1)数据分区

数据库分区的主要目的是为了在特定的SQL操作中减少数据读写的总量以缩减响应时间,主要包括两种分区形式:水平分区与垂直分区。水平分区是对表进行行分区。而垂直分区是对列进行分区,一般是通过对表的垂直划分来减少目标表的宽度,常用的是水平分区。
        hive建立分区语法:       
 
 create external table if not exists tablename(
         a string,
         b string)
  partitioned by (year string,month string)
  row format delimited fields terminated by ',';

2)hive通常有三种方式对包含分区字段的表进行数据插入

(1)静态插入数据:要求插入数据时指定与建表时相同的分区字段,如:
 
 insert overwrite tablename (year='2017', month='03') select a, b from tablename2;
 
        (2)动静混合分区插入:要求指定部分分区字段的值,如:
 
 insert overwrite tablename (year='2017', month) select a, b from tablename2;
 
        (3)动态分区插入:只指定分区字段,不用指定值,如:
 
 insert overwrite tablename (year, month) select a, b from tablename2;
 
        hive动态分区设置相关参数:
 
 Hive.exec.dynamic.partition  是否启动动态分区。false(不开启) true(开启)默认是 false
 hive.exec.dynamic.partition.mode  打开动态分区后,动态分区的模式,有 strict和 nonstrict 两个值可选,strict 要求至少包含一个静态分区列,nonstrict则无此要求。各自的好处,大家自己查看哈。
 hive.exec.max.dynamic.partitions 允许的最大的动态分区的个数。可以手动增加分区。默认1000
 hive.exec.max.dynamic.partitions.pernode 一个 mapreduce job所允许的最大的动态分区的个数。默认是100
 

3)数据插入之insert into 和 insert overwrite

hive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供简单的sql查询功能,可以将sql语句转换为MapReduce任务进行运行。通常hive包括以下四种数据导入方式:
(1)、从本地文件系统中导入数据到Hive表;
(2)、从HDFS上导入数据到Hive表;
(3)、在创建表的时候通过从别的表中查询出相应的记录并插入到所创建的表中;
(4)、从别的表中查询出相应的数据并导入到Hive表中。
 INSERT INTO 
使用样例
 
                 insert into table tablename1 select a, b, c from tablename2;
 
 INSERT OVERWRITE 
使用样例
 
                 insert overwrite table tablename1 select a, b, c from tablename2;
 
 两者的异同 
        insert into 与 insert overwrite 都可以向hive表中插入数据,但是insert into直接追加到表中数据的尾部,而insert overwrite会重写数据,既先进行删除,再写入。如果存在分区的情况,insert overwrite会只重写当前分区数据。

3、单个查询语句中创建表并加载数据

二、导出数据

1.使用insert导出

这种方式的优点在于既可以导出到hdfs上还可以导出到本地目录

下面以导出emp表中数据为例

insert overwrite local directory "/opt/module/data/export/emp" 如果去除local,则是导出到hdfs上

row format delimited fields terminated by "\t"   (格式,可选)

select * from emp;

导出结果

2.使用export导出

这种方式只能导出到hdfs上

export table emp to "/emp";

但是速度比较快

部分转载自:

https://blog.csdn.net/su83362368/article/details/78502542

https://www.cnblogs.com/tele-share/p/9861151.html

HiveQL 数据装在与导出的更多相关文章

  1. C#变成数据导入Excel和导出Excel

    excel 基础 •整个excel 表格叫工作表:workbook:工作表包含的叫页:sheet:行:row:单元格:cell. •excel 中的电话号码问题,看起来像数字的字符串以半角单引号开头就 ...

  2. 基于Metronic的Bootstrap开发框架经验总结(7)--数据的导入、导出及附件的查看处理

    在很多系统模块里面,我们可能都需要进行一定的数据交换处理,也就是数据的导入或者导出操作,这样的批量处理能给系统用户更好的操作体验,也提高了用户录入数据的效率.我在较早时期的EasyUI的Web框架上, ...

  3. 基于MVC4+EasyUI的Web开发框架经验总结(10)--在Web界面上实现数据的导入和导出

    数据的导入导出,在很多系统里面都比较常见,这个导入导出的操作,在Winform里面比较容易实现,我曾经在之前的一篇文章<Winform开发框架之通用数据导入导出操作>介绍了在Winform ...

  4. Oracle 数据的导入和导出(SID service.msc)

    一:版本号说明: (1)(Oracle11  32位系统)Oracle - OraDb11g_home1: (2)成功安装后显演示样例如以下:第一个图是管理工具.创建连接.创建表:第二个是数据库创建工 ...

  5. Matlab文件和数据的导入与导出

    ref: https://blog.csdn.net/zengzeyu/article/details/72530596 Matlab文件和数据的导入与导出 2017年05月19日 15:18:35  ...

  6. Thinkphp框架下PHPExcel实现Excel数据的批量化导入导出

    第一步:下载官方的PHPExcel文件,下载地址https://github.com/PHPOffice/PHPExcel 第二步:解压打开,将PHPExcel\Classes\全部文件拷贝到thin ...

  7. Oracle用imp和exp实现数据的导入和导出

    使用方法如下: Imp username/password@connect_string param=value - exp username/password@connect_string para ...

  8. 一、SQL系列之~使用SQL语言导出数据及实现定时导出数据任务

    一般情况下,SQL数据库中带有导入与导出数据的直接按键操作,点击数据表所在的数据库--任务--导出/导入数据,根据导入/导出向导直接将数据导出即可. 但导出的数据格式多为Excel格式,如果需要导出的 ...

  9. (转)基于Metronic的Bootstrap开发框架经验总结(7)--数据的导入、导出及附件的查看处理

    http://www.cnblogs.com/wuhuacong/p/4777720.html 在很多系统模块里面,我们可能都需要进行一定的数据交换处理,也就是数据的导入或者导出操作,这样的批量处理能 ...

随机推荐

  1. Select与Epoll的区别

      相同点: 都是IO多路转接,都是一个线程能同一时间等待一堆描述符 不同点: 1.select接口使用不方便,每次调用完select都需要重新设置fd_set,因为输入输出未分离,返回的fd_set ...

  2. Java JDK1.8源码学习之路 1 Object

    写在最前 对于一个合格的后端程序员来说,现行的流行框架早已经能胜任基本的企业开发,Springboot 任何的框架都把重复的工作更佳简单/优化的解决掉,但是完全陷入在这样的温水里面, 好比温水煮青蛙, ...

  3. navicat 连接 mysql 提示Client does not support authentication protocol requested by server错误

    安装完mysql后,命令行登录没问题,但是用Navicat连接出现提示性错误.Mysql版本为:8.0.15 命令如下: 1.use mysql; 2.alter user 'root'@'local ...

  4. 私有属性和私有方法l

    class Woman: def __init__(self, name): self.name=name self.__age=18 def __secret(self): print(" ...

  5. JDBC第一个案例

    1.概述 JDBC(Java DataBase Connectivity) 是 Java 提供的用于执行 SQL 语句一套 API,可以为多种关系型数据库提供统一访问,由一套用 Java 语言编写的类 ...

  6. UCOS内存管理

    STM32F10xxx内置64K字节的静态SRAM.它可以以字节.半字(16位)或全字(32位)访问 SRAM的起始地址是0x20000000 UCOSII //定义存储区 OS_MEM *DATA_ ...

  7. vs code 调试设置

    首先vs code 安装插件:Debugger for Chrome vscode 设置:点击调试按钮,然后调试面板界面再点击设置按钮,添加一个配置,选择环境为:chrome编辑器自动生成一个laun ...

  8. 【MySQL】你以为设置了并行复制就降低延迟了?这个你绝对想不到!

    在MySQL官方版本中,为了保证其的高可用性,一般情况我们会采用主从复制的方式来解决.当然,方法很多.而我们今天所要处理的是采用GTID方式并且开了多线程复制后,仍然延迟的情况,糟糕的是,延迟还在不断 ...

  9. 【转】常见的tcp/ip协议的知识

    1.tcp/ip协议的层数 左图是osi 7层模型,右图是tcp/ip 4层模型.二者对应关系如上. 2.socket中TCP的三次握手建立连接详解 我们知道tcp建立连接要进行“三次握手”,即交换三 ...

  10. angularcli 第四篇(执行事件)

    目录: 1.按下按钮执行事件 2.按下键盘回车“Enter”执行事件 1.按下按钮执行事件:<button  (click) = 'setName()'>......</button ...