hive的表的基本操作
环境简介
实验环境使用的是cloudera-quickstart-vm-5.0
环境。
内容摘要
- 创建表
- 修改表名
- 修改表中的列名
- 添加列
- 删除列
- 替换列
正文
Alter Table 语句
上面所述的6种针对hive的操作都是使用Alter Table
来完成的。
Alter Table
的语法如下:
ALTER TABLE name RENAME TO new_name
ALTER TABLE name ADD COLUMNS (col_spec[, col_spec ...])
ALTER TABLE name DROP [COLUMN] column_name
ALTER TABLE name CHANGE column_name new_name new_type
ALTER TABLE name REPLACE COLUMNS (col_spec[, col_spec ...])
重命名表名
- 首先创建目标数据库和目标表
对于的hive sql语句如下:
create database testdb;-- 创建实验需要的数据库
-- 开始 创建表
create table testdb.student(
id int comment 'student id',
name string comment 'student name',
gender string comment 'student gender'
);
-- 结束 创建表
- 查看创建后的表的信息
查看表的信息,使用describe table
来实现。对应的hive sql 语句如下:
-- 开始 查看表
describe testdb.student;
-- 结束 查看表
可以看到,该表已经成功创建,如果想要查看该表的详细信息,使用formatted
关键字。代码如下:
-- 开始 查看表
describe formatted testdb.student;
-- 结束 查看表
- 修改表名
为了简单起见,我们这里将testdb.student
修改为testdb.student2
。对应的代码如下:
use testdb;-- 这里最好先切换数据库为目标数据库
alter table student rename to student2; -- tablea rename to tableb
describe testdb.student2; -- 用新表名查看表信息
修改字段信息
下表包含testdb.employees
表的字段,它显示的字段要被更改(粗体)。
字段名 | 从数据类型转换 | 更改字段名称 | 转换为数据类型 |
---|---|---|---|
eid | int | eid | int |
name | String | ename | String |
salary | Float | salary | Double |
designation | String | designation | String |
1. 准备工作
为了上面的实验,我们需要先创建testdb.employees
表。对应的hive sql语句如下:
create table testdb.employees(
eid int comment 'this is employees id',
name string comment 'this is employee name',
salary float comment 'this is the salary of employee',
desination string );
-- 查看创建后的表
describe testdb.employees;
2. 修改表中的列信息 从1中的表我们知道我们需要将employees.name
修改成employees.ename
,还是就是将employees.salary
的类型由float
换成double
类型。实现本案例的hive sql语句如下:
use testdb; -- 切换到目标数据库
-- 本条语句是将name 字段更改为ename string
alter table employees CHANGE name ename string;
-- 本条语句是将salary更改为salary double
alter table employees CHANGE salary salary double;
describe employees;
相信大家可以看出,需要修改字段的信息我们使用change 命令。命令格式为:
alter table chane old_column new_column new_clumn_type
添加字段
- 准备工作
我们仍然使用上例中的testdb.employees
表来进行操作。这里就不再重复贴出代码。 - 新加的列信息
我们希望给员工添加上一个入职时间:joinDate date
。为了实现该目标,我么需要输入的hive sql 如下所示:
use testdb;
alter table employees add COLUMNS (
joinDate date comment 'date type is supported by Hive0.12.0'
);
describe testdb.employees;
替换列
这里的替换和之前的修改有点类似,这里的替换应该更强调的是位置。
我们这里将employees
中的eid
和ename
替换掉。
1. 动手之前先看一下当前的testdb.employees
中有哪些字段吧
describe testdb.employees;
- 完成替换
为了完成替换的任务,我们编写如下的hive sql语句
use testdb;
alter table employees replace columns(
eid int epmid int,
ename string empname string
);
describe testdb.employees;
- 这里要说一声抱歉,如下两张图所示,我的语句并没有执行成功。
- 解决方法
use testdb;
alter table employees replace columns(
epmid int,
empname string
);
describe testdb.employees;
根据上面的语句和图片所示,我们可以看到REPLACE COLUMNS是将原来的表中的字段删除,然后使用新的字段来填充该表。
更多内容,请移步阅读:传送门
hive的表的基本操作的更多相关文章
- MySQL学习笔记02_数据库和表的基本操作
02_1 操作数据库 (1)创建数据库 CREATE DATABASE [IF NOT EXISTS] db_name [create_specification[, create_specifica ...
- 【转】Hive内部表、外部表
hive内部表.外部表区别自不用说,可实际用的时候还是要小心. 1. 内部表: create table tt (name string , age string) location '/input/ ...
- hive内部表、外部表
hive内部表.外部表区别自不用说,可实际用的时候还是要小心. Hive的数据分为表数据和元数据,表数据是Hive中表格(table)具有的数据:而元数据是用来存储表的名字,表的列和分区及其属性,表的 ...
- Hive内表和外表的区别
本文以例子的形式介绍一下Hive内表和外表的区别.例子共有4个:不带分区的内表.带分区的内表.不带分区的外表.带分区的外表. 1 不带分区的内表 #创建表 create table innerTabl ...
- hive内部表与外部表区别
1.在Hive里面创建一个表: hive> create table wyp(id int, > name string, > age int, > tele ...
- Hive学习之三 《Hive的表的详解和应用案例详解》
一.Hive的表 Hive的表分为内部表.外部表和分区表. 1.内部表,为托管表. 2.外部表,external. 3.分区表. 详解: 内部表,删除表的时候,数据会跟着删除. 外部表,在删除表的时候 ...
- hive 创建表和导入数据实例
//创建数据库create datebase hive;//创建表create table t_emp(id int,name string,age int,dept_name string,like ...
- S3c2440A WINCE平台HIVE注册表+binfs的实现
今天最大的收获莫过于把binfs和hive注册表同时在三星的平台上实现了,这可是前无古人啊(只是看到好多哥们说找不到三星的HIVE资料),哈哈哈.怕今天的成果日后成炮灰,还是写下来比较好,要养成这样的 ...
- hive删除表和表中的数据
hive删除表和表中的数据,以及按分区删除数据 hive删除表: drop table table_name; hive删除表中数据: truncate table table_name; hive按 ...
随机推荐
- ng自定义服务(利用factory)
ng中我们可以自己定义自己的服务,服务中是一些使用重复率较高的方法.因此有效的使用服务可以提高开发速度. ng中定义服务的方法有多种,service,factory,provide,在此我只介绍最长用 ...
- 老李推荐: 第14章2节《MonkeyRunner源码剖析》 HierarchyViewer实现原理-HierarchyViewer架构概述
老李推荐: 第14章2节<MonkeyRunner源码剖析> HierarchyViewer实现原理-HierarchyViewer架构概述 HierarchyViewer库的引入让M ...
- 老李推荐:第8章6节《MonkeyRunner源码剖析》MonkeyRunner启动运行过程-启动Monkey 4
在获得比对设备序列号后,findAttachedDevice就会跟提供的序列号进行比对,如果吻合就返回给调用者” 代码8-6-3 AdbBackend - waitForConnection”了.而A ...
- web service 组件
web service 组件 基本的 web service 平台是 XML + HTTP.所有标准的 web service 使用以下组件: SOAP(简单对象访问协议) UDDI(通用描述.发现与 ...
- 深度学习的2016: NIPS 2016速览
With best wishes for a happy New Year! NIPS(Nerual Information Processing Systems)是人工智能.机器学习领域的顶级学术会 ...
- 一些CSS/JS小技巧
CSS部分 1.文本框不可点击 .inputDisabled{ background-color: #eee;cursor: not-allowed;} 2.禁止复制粘贴 onpaste=" ...
- Twitter数据非API采集方法
说明:这里分三个系列介绍Twitter数据的非API抓取方法. 在一个老外的博看上看到的,想详细了解的可以自己去看原文. 这种方法可以采集基于关键字在twitter上搜索的结果推文,已经实现自动翻页功 ...
- git-ftp 用git管理ftp空间
ftp管理不能实现版本控制,而且多电脑工作时,同步很成问题. git-ftp可以完美的解决问题 下面是我的趟坑之路,本机的环境是win10,首先你的机器得装有git. git-ftp的地址https: ...
- LINUX下安装搭建nodejs及创建nodejs-express-mongoose项目
在Ubuntu中按CTRL+ALT+T打开命令窗口,按下面步骤和命令进行安装即可.添加sublime text 3的仓库.1.sudo add-apt-repository ppa:webupd8te ...
- JAVA Struts2 搭建
java struts 2搭建 1.web工程 2.将struts2 用到的jar包,拷贝到webcontent/webinf/lib文件夹.下 3.webcontent 下的web.xml 下 ...