分享

hive转义字符

 huyu8012 2016-07-06
CREATE TABLE escape (id STRING, name STRING) 
ROW FORMAT DELIMITED FIELDS TERMINATED BY '''; 

LOAD DATA LOCAL INPATH '/home/tianzhao/book/escape.txt' 
OVERWRITE INTO TABLE escape; 

escape.txt的内容是: 
Joe'2\'3333 
Hank'2\'3333 

表没有转义,那么两个“都会当作字段分隔符,查询结果是: 
select * from escape; 
Joe 2\ 
Hank 2\ 


ALTER TABLE escape SET SERDEPROPERTIES ('escape.delim' = '\\'); 给表加上了转义字符\,\后面的字符会被转义,直接跳过,如果是分隔符不会被当作分隔符。查询结果是: 
select * from escape; 
Joe 2'3333 
Hank 2'3333 




CREATE TABLE escape2 (id STRING, name STRING) 
ROW FORMAT DELIMITED FIELDS TERMINATED BY '''; 

LOAD DATA LOCAL INPATH '/home/tianzhao/book/escape2.txt' 
OVERWRITE INTO TABLE escape2; 

escape2.txt 的内容是: 
Joe'2'3333'44 
Hank'2'3333'44 
实际数据比表的字段要多。 

select * from escape2; 
Joe 2 
Hank 2 


ALTER TABLE escape2 SET SERDEPROPERTIES ('serialization.last.column.takes.rest' = 'true'); 
serialization.last.column.takes.rest 的意思是最后一个字段的内容是否包含那些多余的数据: 
select * from escape2; 
Joe 2'3333'44 
Hank 2'3333'44 

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多