轉(zhuǎn)自https://blog.csdn.net/wisgood/article/details/17186599
1弄唧、表相關SQL操作
1.1孵班、創(chuàng)建內(nèi)部表
CREATE TABLE table_name (name string);
1.2、創(chuàng)建內(nèi)部表,并指定分區(qū)字段
CREATE TABLE table_name (name string) PARTITIONED BY (dt string);
1.3、創(chuàng)建內(nèi)部表,并指定分隔符
CREATE TABLE table_name(name string) PARTITIONED BY (dt string ) ROW FORMAT DELIMITED
FIELDS TERMINATED BY '\t'
COLLECTION ITEMS TERMINATED BY ':'
MAP KEYS TERMINATED BY ',' ;
1.4 創(chuàng)建外部表遏匆,指定分區(qū)复哆,帶分隔符
CREATE EXTERNAL TABLE outer_table_with_partition(name string) PARTITIONED BY (dt string ) ROW FORMAT DELIMITED
FIELDS TERMINATED BY '\t'
COLLECTION ITEMS TERMINATED BY ':'
MAP KEYS TERMINATED BY ','
location '/home/hive/table_name/' ;
1.5 創(chuàng)建內(nèi)部表猬错,并判斷是否內(nèi)布表是否已經(jīng)存在
CREATE TABLE IF NOT EXISTS table_name (name string);
加了 IF NOT EXISTS 饥漫,sql執(zhí)行的結(jié)果總是成功;如果沒加妹孙,表存在的情況下會返回失敗。
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 )
注意:執(zhí)行完上述sql后,新表的結(jié)構是(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');
注意:如果一個表帶有分區(qū)省店,修改了表的schema后嚣崭,只會對后續(xù)插入的分區(qū)有影響。之前的分區(qū)還是原來的列懦傍。因為hive把每個分區(qū)的schema信息單獨記錄在數(shù)據(jù)庫了雹舀。所以需要把原來的分區(qū)全部drop掉,重新add粗俱。
1.16 將本地文件中的數(shù)據(jù)加載到表中
LOAD DATA LOCAL INPATH './examples/files/kv1.txt' OVERWRITE INTO TABLE table_name;
1.17 加載本地數(shù)據(jù)说榆,同時給定分區(qū)信息
LOAD DATA LOCAL INPATH './examples/files/kv2.txt' OVERWRITE INTO TABLE table_name PARTITION (ds='2008-08-15');表必須帶分區(qū)列。
1.18 加載hdfs數(shù)據(jù)寸认, 同時給定分區(qū)信息
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