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中的字段分割符修改成'	',注意,这是在表没有分区的情况下
ALTER TABLE emp SET SERDEPROPERTIES("field.delim"="	");
--例1:
  CREATE TABLE emp(id INT,uname STRING)
    ROW FORMAT DELIMITED FIELDS TERMINATED BY '#' 
    LINES TERMINATED BY '
' 
    STORED AS textfile;
-- 这条语句将t8表中的字段分隔符'#'修改成'	';
  ALTER TABLE emp SET SERDEPROPERTIES('field.delim'='	');
--例2:
  CREATE TABLE emp(id INT,uname STRING) 
  PARTITIONED BY(dt string) 
  ROW FORAMT DELIMITED FIELDS TERMINATED BY '
' 
  STORED AS textfile;
ALTER TABLE emp PARTITION(dt='20180108') SET SERDEPROPERTIES('field.delim=	');
--例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,course
FROM 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中的字段分割符修改成' ',注意,这是在表没有分区的情况下ALTER TABLE emp SET SERDEPROPERTIES("field.delim"=" ");--例1:  CREATE TABLE emp(id INT,uname STRING)    ROW FORMAT DELIMITED FIELDS TERMINATED BY '#'     LINES TERMINATED BY ' '     STORED AS textfile;-- 这条语句将t8表中的字段分隔符'#'修改成' ';  ALTER TABLE emp SET SERDEPROPERTIES('field.delim'=' ');--例2:  CREATE TABLE emp(id INT,uname STRING)   PARTITIONED BY(dt string)   ROW FORAMT DELIMITED FIELDS TERMINATED BY ' '   STORED AS textfile;ALTER TABLE emp PARTITION(dt='20180108') SET SERDEPROPERTIES('field.delim= ');--例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/14306562.html