hive修改表DDL

-- 修改表名ALTER TABLE 表名 RENAME TO 新表名;

-- 修改表注释,comment要小写ALTER TABLE 表名 SET TBLPROPERTIES('comment' = '表注释内容');

-- 添加列和注释ALTER TABLE 表名 ADD COLUMNS (1 sid STRING COMMENT '学生id',2 STRING COMMENT '学生姓名');

-- 修改列名和注释ALTER TABLE 表名 CHANGE COLUMN 列名 新列名 string COMMENT '学生id';

-- 修改列名ALTER TABLE 表名 CHANGE COLUMN 列名 新列名 string;

-- 可以把该列放到指定列的后面,或者使用'FIRST'放到第一位ALTER TABLE 表名 CHANGE COLUMN 列名 新列名 int(修改后列的属性) COMMENT 'column_name' AFTER severity;-- 将表tablename中的列column_orign修改成column_new,同时指定修改后的列名称的属性,comment是这个列的注释

 

--1

 

   ALTER TABLE emp CHANGE COLUMN age uage double COMMENT 'column age' AFTER id;

  -- 查看表的属性DESC FORMATTED tablename;

-- 修改表的属性

-- table_name表中的property_name属性值修改成'new_value';ALTER TABLE table_name SET TBLPROPERTIES('property_name'='new_value');

-- 将表table_name中的字段分割符修改成'\t',注意,这是在表没有分区的情况下ALTER TABLE emp SET SERDEPROPERTIES("field.delim"="\t");

--1

 

 CREATE TABLE emp(id INT,uname STRING)
    ROW FORMAT DELIMITED FIELDS TERMINATED BY '#' 
    LINES TERMINATED BY '\n' 
    STORED AS textfile;-- 这条语句将t8表中的字段分隔符'#'修改成'\t';
  ALTER TABLE emp SET SERDEPROPERTIES('field.delim'='\t');--例2:
  CREATE TABLE emp(id INT,uname STRING) 
  PARTITIONED BY(dt string) 
  ROW FORAMT DELIMITED FIELDS TERMINATED BY '\n' 
  STORED AS textfile;ALTER TABLE emp PARTITION(dt='20180108') SET SERDEPROPERTIES('field.delim=\t');--例3 ALTER TABLE table_name[partition] set location 'path'--内部表转化成外部表ALTER TABLE emp SET TBLPROPERTIES('EXTERNAL'='TRUE');--外部表转化成内部表ALTER TABLE emp SET TBLPROPERTIES('EXTERNAL'='FALSE');

 

-- 解析json字符串get_json_object(param1,"$.param2")

-- param1:需要解析的json字段

-- param2:遇到数组就用 [0,1,2...] 0,1,2是数组对应的元素,遇到jsonObject直接用 "$.key"取出想要获取的value

SELECT get_json_object('{"name":"王二狗","sex":"男","age":"25"}','$.name') movie

-- 侧写

SELECT name,courseFROM student
LATERAL VIEW
EXPLODE(SPLIT(course,",")) course_tmp AS course ;

https://cwiki.apache.org/confluence/display/Hive/LanguageManual

-- 修改表名ALTER TABLE 表名 RENAME TO 新表名;
-- 修改表注释,comment要小写ALTER TABLE 表名 SET TBLPROPERTIES('comment' = '表注释内容');
-- 添加列和注释ALTER TABLE 表名 ADD COLUMNS (列1 sid STRING COMMENT '学生id',列2 STRING COMMENT '学生姓名');
-- 修改列名和注释ALTER TABLE 表名 CHANGE COLUMN 列名 新列名 string COMMENT '学生id';
-- 修改列名ALTER TABLE 表名 CHANGE COLUMN 列名 新列名 string;
-- 可以把该列放到指定列的后面,或者使用'FIRST'放到第一位ALTER TABLE 表名 CHANGE COLUMN 列名 新列名 int(修改后列的属性) COMMENT 'column_name' AFTER severity;-- 将表tablename中的列column_orign修改成column_new,同时指定修改后的列名称的属性,comment是这个列的注释   --例1:   ALTER TABLE emp CHANGE COLUMN age uage double COMMENT 'column age' AFTER id;   -- 查看表的属性DESC FORMATTED tablename;
-- 修改表的属性-- 将table_name表中的property_name属性值修改成'new_value';ALTER TABLE table_name SET TBLPROPERTIES('property_name'='new_value');
-- 将表table_name中的字段分割符修改成'\t',注意,这是在表没有分区的情况下ALTER TABLE emp SET SERDEPROPERTIES("field.delim"="\t");--例1:  CREATE TABLE emp(id INT,uname STRING)    ROW FORMAT DELIMITED FIELDS TERMINATED BY '#'     LINES TERMINATED BY '\n'     STORED AS textfile;-- 这条语句将t8表中的字段分隔符'#'修改成'\t';  ALTER TABLE emp SET SERDEPROPERTIES('field.delim'='\t');--例2:  CREATE TABLE emp(id INT,uname STRING)   PARTITIONED BY(dt string)   ROW FORAMT DELIMITED FIELDS TERMINATED BY '\n'   STORED AS textfile;ALTER TABLE emp PARTITION(dt='20180108') SET SERDEPROPERTIES('field.delim=\t');--例3 ALTER TABLE table_name[partition] set location 'path'--内部表转化成外部表ALTER TABLE emp SET TBLPROPERTIES('EXTERNAL'='TRUE');--外部表转化成内部表ALTER TABLE emp SET TBLPROPERTIES('EXTERNAL'='FALSE');
-- 解析json字符串get_json_object(param1,"$.param2") -- param1:需要解析的json字段 -- param2:遇到数组就用 [0,1,2...] 0,1,2是数组对应的元素,遇到jsonObject直接用 "$.key"取出想要获取的value。SELECT get_json_object('{"name":"王二狗","sex":"男","age":"25"}','$.name') movie
-- 侧写SELECT name,courseFROM studentLATERAL VIEWEXPLODE(SPLIT(course,",")) course_tmp AS course ;

 

原文地址:https://www.cnblogs.com/lly001/p/15559493.html