Hive常用的SQL命令操作

1、表相关SQL操作
1.1、创建内部表
CREATE TABLE table_name (name string); 
select * from table_name

LOAD DATA LOCAL INPATH '/litong/data/20170507' overwrite INTO TABLE tracktest_log PARTITION (ds='2017-05-07',hour='18');

insert into table_name(name) values('测试3');

insert into t_log_2016(id,name) values(6,'测试3');
create table test1(
id int, name string
)
partitioned by
(age int)
ROW FORMAT DELIMITED
FIELDS TERMINATED BY '\t'
STORED AS TEXTFILE;



1.2、创建内部表,并指定分区字段
CREATE TABLE table_name (name string) PARTITIONED BY (dt STRING); 
1.3、创建内部表,并指定分隔符
CREATE TABLE table_name(name string) PARTITIONED BY (dt string ) ROW FORMAT DELIMITED
FIELDS TERMINATED BY '\001'
COLLECTION ITEMS TERMINATED BY ':'
MAP KEYS TERMINATED BY ',' ;
1.4 创建外部表,指定分区,带分隔符
CREATE TABLE outer_table_with_partition(name string) PARTITIONED BY (dt string ) ROW FORMAT DELIMITED
FIELDS TERMINATED BY '\001'
COLLECTION ITEMS TERMINATED BY ':'
MAP KEYS TERMINATED BY ',' 
location '/home/hive/table_name/' ;
1.5 创建内部表,并判断是否内布表是否已经存在
CREATE TABLE  IF NOT EXISTS  table_name (name string); 
加了 IF NOT EXISTS ,sql执行的结果总是成功;如果没加,表存在的情况下会返回失败。
1.6 显示所有表
SHOW TABLES;
1.7 显示部分表
show tables like "*30d" ; (显示后缀带30d的表名)
1.8 表中添加一列 
ALTER TABLE table_name ADD COLUMNS (new_col INT); 可以一次增加多个列
1.9 添加一列并增加列字段注释
ALTER TABLE table_name ADD COLUMNS (new_col2 INT COMMENT 'a comment');
1.10 更改表名
ALTER TABLE table_name RENAME TO 3koobecaf;
1.11 删除表
DROP TABLE pokes;
1.12 修改原来的列
alter table table_name  change c1_old_name  c1_new_name  string  //修改hive列c1_old_name,列名改为c1_new_name,同时修改字段类型。
1.13 删除列
ALTER TABLE table_name REPLACE COLUMNS (c1_new string ,c2_new string )
注意:执行完上述sql后,新表的结构是(c1_new string ,c2_new string )。
1.14 修改表存储位置
alter table  table_name  set location 'viewfs://nsX/user/hive/warehouse/raw.db/weixin/sogou_com/weixin_sogou_com_error'
1.15 修改表的字段分隔符 
alter table table_name  SET SERDEPROPERTIES ('field.delim' = '\t');
alter table table_name  SET SERDEPROPERTIES ('colelction.delim' = '\t');
alter table table_name  SET SERDEPROPERTIES ('mapkey.delim' = '\t');
alter table table_name  SET SERDEPROPERTIES ('line.delim' = '\t');
注意:如果一个表带有分区,修改了表的schema后,只会对后续插入的分区有影响。之前的分区还是原来的列。因为hive把每个分区的schema信息单独记录在数据库了。所以需要把原来的分区全部drop掉,重新add

1.16 将文件中的数据加载到表中
LOAD DATA LOCAL INPATH './examples/files/kv1.txt' OVERWRITE INTO TABLE table_name; 
1.17 加载本地数据,同时给定分区信息
LOAD DATA LOCAL INPATH './examples/files/kv2.txt' OVERWRITE INTO TABLE table_name PARTITION (ds='2008-08-15');表必须带分区列。
1.18 加载hdfs数据, 同时给定分区信息
LOAD DATA INPATH '/user/myname/kv2.txt' OVERWRITE INTO TABLE invites PARTITION (ds='2008-08-15');
The above command will load data from an HDFS file/directory to the table. Note that loading data from HDFS will result in moving the file/directory. As a result, the operation is almost instantaneous. 
1.19 查看表的描述
desc formatted table_name 或者 desc table_name 

猜你喜欢

转载自blog.csdn.net/oZuoLuo123/article/details/72676596
今日推荐