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 ;