-----语法
SHOW TABLES; --查看表
DESCRIBE TABLE_NAME --查看表的字段
ALTER TABLE TABLE_NAME1 RENAME TO TABLE_NAME2; --重命名表
ALTER TABLE TABLE_NAME1 ADD COLUMN (COLUMN_NAME DATA_TYPE); --增加列
ALTER TABLE TABLE_NAME1 DROP PARTITION (COLUMN_NAME1=’…’); --删除表的分区
SHOW TABLES ‘关键字 _.*’; --正则匹配表名,类似于oracle中LIKE
! ls; --类似于ls –al
! head hive_result ;
CONCAT(字符A,字符B)与oracle用法相同;substr、ceil、floor、log、sqrt、round、to_data等常用函数与oracle相同;
REGEXP、REGEXP_REPLACE、DAY,DAYOFMONTH,MONTH,YEAR、unix_timestamp、from_unixtime、date_add、date_sub、datediff的用法
关联(JOIN)语法与oracle相同,只是ON后面的关联条件要在()内,未验证不加()是否可以,或者多条件关联是否可以,加限定条件是否可以
计算表扫描时间:SELECT AVG(VIEWTIME) FROM TABLE_NAME1
TABLESAMPLE(BUCKET X OUT OF Y); --Y为桶数的倍数或者因数;实现的是每Y桶,选第X桶
------插入数据
INSERT OVERWRITE TABLE TABLE_NAME
SELECT A.*
FROM TABLE_NAME1 A
WHERE A.COLUMN_NAME=…;
INSERT OVERWRITE TABLE TABLE_NAME
SELECT A.COLUMN_NAME1。,COUNT(A.COLUMN_NAME2)
FROM TABLE_NAME1 A
GROUP BY A.COLUMN_NAME1;
------建表
1、
CREATE TABLE TABLE_NAME (COLUMN_NAME1 INT,COLUMN_NAME2 INT) --表名、字段名、字段类型
ROW FORMAT DELIMITED --
FIELDS TERMINATED BY ‘,’ --解析表的方式以,为分隔符
STORED AS TEXTFILE; --存储方式,以文本方式存储
2、
CREATE TABLE TABLE_NAME (COLUMN_NAME1 DATA_TYPE,COLUMN_NAME2 DATA_TYPE);
3、
CREATE TABLE TABLE_NAME (COLUMN_NAME1 DATA_TYPE,COLUMN_NAME2 DATA_TYPE COMMENT ‘…’) --对COLUMN_NAME2字段的注释
COMMENT ‘…’ --对表加注释
PARTITION BY (COLUMN_NAME3 STRING,COLUMN_NAME4 STRING) --按COMUMN_NAME3 、COLUMN_NAME4进行分区(有疑问)
CLUSTERED BY (COLUMN_NAME1) INTO N(2的N次方) BUCKETS --相当于oracle中按某一列进行hash
ROW FORMAT DELIMITED --设置使用行存储方式存储数据,若无则使用换行符进行换行
FIELDS TERMINATED BY ‘\t’ --字段之间用制表符隔开
LINES TERMINATED BY ‘\n’ --行行之间用换行符隔开
STORED AS SEQUENCEFILE; --HIVE目前只支持textfile和sequencefile(压缩格式,具有更高的性能);
4、
CREATE EXTERNAL TABLE TABLE_NAME(COLUMN_NAME1 DATA_TYPE,COLUMN_NAME2 DATA_TYPE)
LOCATION ‘目录文件地址’; --可把表创建在指定位置
------加载数据(加载数据时,如果有违反表的定义的,则会被放置为NULL)
LOAD DATA LOCAL INPATH ‘文件名’
OVERWRITE INTO TABLE TABLE_NAME;
-----统计{支持count(1),不支持count(*)}
SELECT COUNT(1) FROM TABLE_NAME;
SELECT * FROM TABLE_NAME WHERE COUNT>10 AND LIMIT<10;
-----删除表
DROP TABLE TABLE_NAME;
--分区和桶
HIVE中的分区带来的好处类似于关系型数据库中的索引;感觉更类似于oracle中的范围和时间分区;
HIVE 中的桶对随机抽样数据的查询更高效,感觉类似于oracle中的hash分区;