##### 创建数据库
```create database Test;
create database gd1905;
create database if not exists qf1903;
create database if not exists qf1903 comment 'this is a database of qf';
show databases; 查看所有数据库
切换数据库
use qd1905; 切换数据库
删除数据库
drop database databasename;
drop database gddb; 这个只能删除空库
drop database gddb cascade; 如果不是空库,则可以加cascade强制删除
查看数据库信息
desc database databaseName;查看当前数据库在集群上的位置
desc database extended databaseName;
describe database extended databaseName;
查看当前表空间中的所有表名
show tables;
创建表(
一般的数用int类型就行
string 类型的字段查询时数据需要用当引号’’))
语句最后还要加上;
create table t_user(id int,name string);
create table qf1903.t_user(id int,name string);
表存在忽略提示信息
create table if not exists t1(
uname string comment 'this is name',
chinese int,
math int,
english int
)
comment 'this is my table'
row format delimited
fields terminated by '\t'
lines terminated by '\n'
stored as textfile;
分号表示结束
查看表结构
desc extended tableName;
desc tableName;输出表的schema信息以及分区信息。
show create table table_name; 该语句输出表的建表语句,较为好用,输出的信息也基本够用了
删除表
drop table tableName;
删除执行分区数据
alter table 表名 drop if exists partition(data_dt='ETL_DEL_DATE');
加载数据的方式:
方法1:使用hdfs dfs -put将本地文件上传到表目录下
hdfs dfs -put ./u1.txt /user/hive/warehouse/mydb1.db/
hdfs dfs -put ./student.txt /user/hive/warehouse/qf1905.db/student/
hdfs dfs -put ./course.txt /user/hive/warehouse/qf1905.db/course/
方法2:在hive中使用load 命令
load data [local] inpath '文件路径' [overwrite] into table 表名
不加local就是把分布式系统下的文件转到目的表下
加local就是把Linux系统上的文件转到目的文件下
加载数据的扩展
向指定分区中加载数据
从另外一张表(也可称之为备份表)中动态加载数据(前提两张表都存在))
insert into table tableName2 select [.....] from tableName1;
注意:tableName2表中的字段个数必须和tableName1表中查询出来的个数相同
insert into acct_wt_user_avg_stock_hold_days partition (part_init_date='20190425',interval_type=1) select '20190425','4567890',30 from acct_wt_user_hold_stock_earnging_ratio limit 1;
like建表法
会创建结构完全相同的表,但是没有数据。