栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 前沿技术 > 大数据 > 大数据系统

hive ddl 字段去掉双引号(hive ddl dml sql)

hive ddl 字段去掉双引号(hive ddl dml sql)

DDL数据定义

CREATE DATAbase [IF NOT EXISTS] database_name
[COMMENT database_comment]
[LOCATION hdfs_path]
[WITH DBPROPERTIES (property_name=property_value, ...)];

在hive中创建一个数据库 默认路径是在/user/hive/warehouse/…
路径下的 当让可以通过 location进行更改
例子:

hive (default)> create database db_hive2 location '/db_hive2.db';

数据库显示

hive> desc database db_hive;
OK
db_hive hdfs://hadoop102:9820/user/hive/warehouse/db_hive.db
rootUSER

显示详情信息的话可以加入extended关键字~

hive> desc database extended db_hive;

切换数据库
这个就不用过多赘述了吧

use databaseName;

修改数据库

alter database DatabaseName set dbproperties(createtime="2023-02-12");

这时候就可以通过详情信息查询了

desc database extended DatabaseName

删除数据库

drop database DatabaseName;

不过前面最好加个if exists判断是否存在

drop database if exists DatabaseName;

tip:如果数据库中有表 则无法删除 需要加入cascade关键字 来进行层级删除

drop database if exists DatabaseName cascade;

管理表

默认所有创建的表都是管理表 这种表由Hive进行控制数据的整个生命周期 通俗来说就是当管理表删除某些数据时会在hdfs中也删除 然后你就找不到这条数据了~ 因此管理表不适合与其他工具一起使用 这时候就需要外部表

外部表

需要使用EXTERNAL关键字 举个例子

create external table test(id string);

酱紫一个外部表就创建好了 那么外部表有什么作用呢
简单来说就是当你删除数据时 只会删除metastore中的元数据不会删除hdfs中的数据 也就是说你仍让可以在hdfs中查到该数据 再者你也可以通过当时的建表语句建表 然后进行查询 你会发现查询时数据仍然存在!!!

内外部表相互转换
当你创建表时忘记将表设置为外部表时该咋办呢 很简单和修改表类似 只不过dbproperties改为tblproperties就可以了 同时设置EXTERNAL属性 切记!属性名要为大写!
来个例子
首先查询表的类型

desc formatted test;
Table Type: MANAGED_TABLE
alter table test set tblproperties("EXTERNAL"="TRUE");

反之若想将外部表该为内部表(管理表)只需要将True改为False

建表时指定分割符
先来几个英语单词
fields : 字段
terminated : 终止

create table test2(id int,name string) row format delimited fields terminated by "t";

上述sql表示两个 字段之间用tab键分离 那有同学问了 如果不是按照tab键呢 按照“,” 比如我通过hadoop fs -put提交呢?
那么有可能是Null 因为当一个文件中如果没有tab分开
它默认就是一个长度为一的数组 且定义的一个类型为int类型
一些乱七八糟的东西可能就无法进行转换 所以就有可能是null

修改&&删除表
删除表

drop table table_name;

重命名表

alter table table_name rename to new_table_name;

修改字段及属性

alter table table_name replace columns (new_field,column_type);

注意使用replace 是针对整张表进行操作 也就是说通过replace可以完成增删改的操作

alter table table_name change old_column_name new_column_name column_type

而通过change则是对当前列而言

增加列

alter table table_name add columns (column_name,column_type);

无需赘述了吧~
tip:这些操作都是对元数据进行操作 不会对hdfs问价进行修改的!
好了 这篇文章就水到这里了

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/772277.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号