1. 程式人生 > >Hive常用的SQL命令操作

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