删除数据库:
DROP DATABASE是删除所有的表并删除数据库的语句。它的语法如下:
DROP DATABASE StatementDROP (DATABASE|SCHEMA) [IF EXISTS] database_name [RESTRICT|CASCADE];
下面的查询用于删除数据库。假设要删除的数据库名称为userdb。
hive> DROP DATABASE IF EXISTS userdb;
以下是使用CASCADE查询删除数据库。这意味着要全部删除相应的表在删除数据库之前。
hive> DROP DATABASE IF EXISTS userdb CASCADE;
以下使用SCHEMA查询删除数据库。
hive> DROP SCHEMA userdb;
此子句中添加在Hive0.6版本。
行转列:
lateral view explode(split(site,'\\|')) site as temp_site;
join加行转列:对转后的列进行临时命名,否则会有重名问题
SELECT group_id,
temp_${OperateDate}_site as site,
site_price,
start_dt,
end_dt
from (
SELECT ods_site.groupid as group_id,
site,
ods_site_price.price as site_price,
'${OperateDate}' AS start_dt
,'20991231' AS end_dt
FROM ods_site LEFT OUTER JOIN ods_site_price
ON ods_site_price.group_id = ods_site.groupid
WHERE ods_site.yymmdd=${OperateDate} and ods_site_price.yymmdd=${OperateDate})
lateral view explode(split(site,'\\|')) site as temp_${OperateDate}_site ;
添加分区表语法(表已创建,在此基础上添加分区):
ALTER TABLE table_name ADD
partition_spec [ LOCATION 'location1' ]
partition_spec [ LOCATION 'location2' ] ...
for example:
ALTER TABLE day_table ADD
PARTITION (dt='2008-08-08', hour='08')
location '/path/pv1.txt'
删除分区语法:
ALTER TABLE table_name DROP
partition_spec, partition_spec,...
用户可以用 ALTER TABLE DROP PARTITION 来删除分区。分区的元数据和数据将被一并删除。
for example:
ALTER TABLE day_hour_table DROP PARTITION (dt='2008-08-08', hour='09');
数据加载进分区表中语法:
LOAD DATA [LOCAL] INPATH 'filepath' [OVERWRITE] INTO TABLE tablename [PARTITION (partcol1=val1, partcol2=val2 ...)]
for example:
LOAD DATA INPATH '/user/pv.txt' INTO TABLE day_hour_table PARTITION(dt='2008-08- 08', hour='08'); LOAD DATA local INPATH '/user/hua/*' INTO TABLE day_hour partition(dt='2010-07- 07');
当数据被加载至表中时,不会对数据进行任何转换。Load操作只是将数据复制至Hive表对应的位置。数据加载时在表下自动创建一个目录
数据装载:
http://blog.csdn.net/macyang/article/details/7259416
insert into 和overwrite的用法:INSERT INTO TABLE tablename1 [PARTITION \
(partcol1=val1, partcol2=val2 ...)] \
select_statement1 FROM from_statement;
INSERT OVERWRITE TABLE tablename1 [PARTITION \
(partcol1=val1, partcol2=val2 ...) [IF NOT EXISTS]] \
select_statement1 FROM from_statement;
两种方式的相同点:
1.两个表的维度必须一样,才能够正常写入
2.如果查询出来的数据类型和插入表格对应的列数据类型不一致,将会进行转换,但是不能保证转换一定成功,比如如果查询出来的数据类型为int,插入表格对应的列类型为string,可以通过转换将int类型转换为string类型;但是如果查询出来的数据类型为string,插入表格对应的列类型为int,转换过程可能出现错误,因为字母就不可以转换为int,转换失败的数据将会为NULL。
不同点:
1.insert into是增加数据
2.insert overwrite是删除原有数据然后在新增数据,如果有分区那么只会删除指定分区数据,其他分区数据不受影响
没有评论:
发表评论