hive中的转义符

Hadoop和Hive都是用UTF-8编码的,所以, 所有中文必须是UTF-8编码, 才能正常使用

备注:中文数据load到表里面, 如果字符集不同,很有可能全是乱码需要做转码的, 但是hive本身没有函数来做这个

一、转义字符的特殊情况:

自身的转义,比如java有时候需要两个转义字符"\\",或者四个转义字符“\\\\”。

1)java的俩种情况:

a.正则表达式匹配和string的split函数,这两种情况中字符串包含转义字符“\”时,需要先对转义字符自身转义,就是说需要两个转义字符“\\”。比如\n,\t等(java解析后,再有正则和split自身特定进行解析)

b.而当匹配字符正斜线“\”,则需要四个转义字符“\\\\”,因为,首先java(编译器?)自身先解析,转义成两个“\\”,再由正则或split的解析功能转义成一个“\”,才是最终要处理的字符。

这是因为解析过程需要两次,才能在字符串中出现正斜线“\”,出现后才能转义后面的字符。

2)hive中的split和正则表达式

hive用java写的,所以同Java一样,两种情况也需要两个“\\”,

split处理代码为例:

a.split(dealid,'\\\\')[0] as dealids,1: 代码中,如果以“\”作为分隔符的话,那么就需要4个转义字符“\\\\”,即

b.split(all,'~') :这里切分符号是正则表达式,按一个字符分隔没问题

c. split(all,'[|~]+'): 在[]内部拼接成字符串

3hive语句在shell脚本中执行

shell语言也有转义字符,自身直接处理。 
而hive语句在shell脚本中执行时,就需要先由shell转义后,再由hive处理。这个过程又造成二次转义。 
如上面的hive语句写入shell脚本中,执行是错误的,shell先解析,转义成”|“后传给hive,hive解析这个转义字符后,split就无法正确的解析了。 
所以,注意hive语句在shell脚本执行时,转义字符需要翻倍。hive处理的是shell转义后的语句,必须转以后正确,才能执行。

注意:是否使用转义字符是看这个字符在这个语言中有没有特殊意义,有的话,就需要加上\来进行转义、

转义字符的使用:

转义字符

无转义符

转义符\

转义符\\

转义符\\\

"

"

\"

\\”

 

\

不可识别 

不可识别 

不可识别 

\\\\

/

/

\/

\\/

\\\/

'

不可识别 

\'

不可识别  

\\\'

~

~

\~

\\~

 

|

|

\|

\\|

\\\|

;

;

\;

\\;

 

:

:

\:

\\:

 

,

,

\,

\\,

 

.

.

\.

\\.

 

!

!

\!

\\!

 

(

(

\(

\\(

 

)

)

\)

\\)

 

[

不可识别 

不可识别

\\[

 

]

]

\]

\\]

 

{

{

\{'

\\{

 

}

}

\}

\\}

 

?

?

\?

\\?

 

_

_

\_

\\_

 

-

-

\-

\\-

 

#

#

\#

\\#

 

##

##

\##

\\##

\\\##

&

&

\&

\\&

^

^

\^

\\^

二、案例:原数据表

1.\符号

(1)regexp_replace(dealids,'\\[','\\\\')

%jdbc(hive)

Select regexp_replace(dealids,'\\[','\\\\')
as place

From
temp.track_join_rtq_freq_20181029

limit 10

 注意:

2.[与]符号

(1)\\[:split(dealids,'\\[')

%jdbc(hive)

Select split(dealids,'\\[') as place

From
temp.track_join_rtq_freq_20181029

limit 10

(2)]:split(dealids,']')

%jdbc(hive)

Select split(dealids,']') as place

From
temp.track_join_rtq_freq_20181029

limit 10

(3)\\[和[]:regexp_replace(dealids,'\\[','[]')

%jdbc(hive)

Select regexp_replace(dealids,'\\[','[]') as place

From temp.track_join_rtq_freq_20181029

limit 10

(4)\\[和\\{}:regexp_replace(dealids,'\\[','\\{}')

%jdbc(hive)

Select regexp_replace(dealids,'\\[','\\{}')
as place

From
temp.track_join_rtq_freq_20181029

limit 10

3.’符号

(1)\\\':regexp_replace(dealids,'\\[','\\\'')

%jdbc(hive)

Select regexp_replace(dealids,'\\[','\\\'') as place

From temp.track_join_rtq_freq_20181029

limit 10

hive笔记:转义字符的使用的更多相关文章

  1. Hive笔记--sql语法详解及JavaAPI

    Hive SQL 语法详解:http://blog.csdn.net/hguisu/article/details/7256833Hive SQL 学习笔记(常用):http://blog.sina. ...

  2. Hive 笔记

    DESCRIBE EXTENDED mydb.employees  DESCRIBE EXTENDED mydb.employees DESCRIBE EXTENDED mydb.employees ...

  3. hive笔记(自学整理的)

    第一部分:用户管理 创建用户:CREATE DATABASE XXX 查看用户:SHOW DATABASES; 关键查看用户:show databases like 'de.*'   讲解:创建一个用 ...

  4. Hive笔记--配置以及遇到的问题

    ubuntu安装mysql  http://www.2cto.com/database/201401/273423.html Hive安装: http://www.aboutyun.com/forum ...

  5. Hive笔记——技术点汇总

    目录 · 概况 · 手工安装 · 引言 · 创建HDFS目录 · 创建元数据库 · 配置文件 · 测试 · 原理 · 架构 · 与关系型数据库对比 · API · WordCount · 命令 · 数 ...

  6. hive笔记:复杂数据类型-map结构

    map 结构 1. 语法:map(k1,v1,k2,v2,…)   操作类型:map ,map类型的数据可以通过'列名['key']的方式访问 案例: select deductions['Feder ...

  7. hive笔记

    cast cast(number as string),  可以将整数转成字符串 lpad  rpad lpad(target, 10, '0')   表示在target字符串前面补0,构成一个长度为 ...

  8. hive笔记:时间格式的统一

    一.string类型,年月日部分包含的时间统一格式: 原数据格式(时间字段为string类型) 取数时间和格式的语法  2018-11-01 00:12:49.0 substr(regexp_repl ...

  9. hive笔记:复杂数据类型-array结构

    array 结构 (1)语法:array(val1,val2,val3,…)  操作类型:array array类型的数据可以通过'数组名[index]'的方式访问,index从0开始: (2)建表: ...

随机推荐

  1. linux 命令 — sort、uniq

    sort uniq sort:对行或者文本文件排序 uniq:去除重复的行 常用 sort -n file.txt 按数字进行排序 sort -r file.txt 按逆序进行排序 sort -M f ...

  2. js 日期格式 转换 yyyy-MM-dd

    之前js获取到数据库的Date,总是显示成: 后来知道是js 的Date 格式不能直接转换常用的yyyy-MM-dd 的格式 Date.prototype.yyyymmdd = function () ...

  3. lwIP 2.0.3 移植笔记(基于 STM32 + μC/OS-II)

    本次实验参考自原子已经移植好的 LWIP(版本:1.4.1)模板来进行的,感谢! 由于要做的一个小项目要用到网络通信,而且想要加上 UC/OS-II 跑个系统,感觉 LWIP 这个轻量级的 IP 协议 ...

  4. LeetCode链表解题模板

    一.通用方法以及题目分类 0.遍历链表 方法代码如下,head可以为空: ListNode* p = head; while(p!=NULL) p = p->next; 可以在这个代码上进行修改 ...

  5. NLP入门(一)词袋模型及句子相似度

      本文作为笔者NLP入门系列文章第一篇,以后我们就要步入NLP时代.   本文将会介绍NLP中常见的词袋模型(Bag of Words)以及如何利用词袋模型来计算句子间的相似度(余弦相似度,cosi ...

  6. [面试]中高级测试工程师必备,月薪15K+

    1.你的测试职业发展是什么? 测试经验越多,测试能力越高.所以我的职业发展是需要时间积累的,一步步向着高级测试工程师奔去.而且我也有初步的职业规划,前3年积累测试经验,按如何做好测试工程师的要点去要求 ...

  7. mysql5.7 datetime 默认值为‘0000-00-00 00:00:00'值无法创建问题解决

    mysql5.7 datetime 默认值为‘0000-00-00 00:00:00'值无法创建问题解决

  8. SpringBoot史前简述

    背景 大约20年前,程序员们使用“企业级Java Bean”(EJB)开发企业应用,需要配置复杂的XML. 在二十世纪初期,新兴Java技术——Spring,横空出世.使用极简XML和POJO(普通J ...

  9. 使用CSS实现无滚动条滚动

    我们都知道,撸页面的时候当我们的内容超出了我们的div,往往会出现滚动条,影响美观. 尤其是当我们在做一些导航菜单的时候.滚动条一出现就破坏了UI效果. 我们不希望出现滚动条,也不希望超出去的内容被放 ...

  10. select&epoll

    内核空间和用户空间 现在操作系统都是采用虚拟存储器,那么对 32 位操作系统而言,它的寻址空间(虚拟地址空间,或叫线性地址空间)为 4G(2的32次方).也就是说一个进程的最大地址空间为 4G.操作系 ...