hive的基本操作创建与加载数据
创建数据库
create database if not exists mydb;
create database mydb;
create database if not exists mydb comment 'this is mydb';创建加上描述
use databasename; 切换数据库
删除数据库
drop database mydb; 可以删除空数据库
drop database cascade;强制删除数据库
创建表
create table [if not exists] tablename(
字段名 类型
........
)
row format delimited
fields terminated by '\t' 指定属性以tab分隔在存储时,
lines terminated by '\n’;指定换行符
store as textfile;指定存储方式
内部表加载数据
方法一:hdfs dfs -put 本地文件上传到表目录下 /user/hive/warehouse/数据库名/表名
方法二:在hive中使用load 命令
load data [local] inpath ‘文件路径’ [overwrite] into table 表名
如果不加local会默认在hdfs系统上找,若有则将数据移动到该表下
创建外表***external***关键字必须加上
create **external** table [if not exists] tablename(
字段名 类型
........
)
row format delimited
fields terminated by '\t' 指定属性以tab分隔在存储时,
lines terminated by '\n’;指定换行符
store as textfile;指定存储方式
加载数据的的方式与内部表相同,外部表可以先存在文件再进行创表
内部表和外部表的区别
内部表表目录会默认创建在集群上的/user/hive/warehouse下所在库目录下
外部表要用location进行指定,不指定就是和内部表相同,location后的目录
必须时集群上的目录
内部表删除时清除表的元数据信息和数据全部清除,外部表会只会清楚元数据不会清除表的数据。
加载数据的扩展
1. insert into table tablename2 select [....] from tablename1;
tablename1中的字段个数要和查出来的字段个数一致
2. 复制表结构 create table if not exists tablename2 like tablename1
3. 复制表结构和表数据
create table if not exists tablename2 as select [....] from tablename1;
create table if not exits tablename2 like tablenname location ‘tablename1的表目录’不会创建新的表目录两表使用同一个表目录
4. 向多张表中插入表数据
from tablename1 insert into tablename2 select * where 条件 insert into tablename3 select * where 条件
查看表和数据库的数据结构
desc database databaseName; -- 查看数据库结构
desc database extended databaseName; -- 更多信息
describe database extended databaseName; -- 查看描述
desc tableName; -- -- 查看表结构
desc extended tableName;
describe extended tableName;