插入带有特殊字符的配置单元表格内容-制表符和换行符 [英] Inserting Hive table content with special characters -Tab space and New Line

查看:15
本文介绍了插入带有特殊字符的配置单元表格内容-制表符和换行符的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试从根据WHERE子句筛选的配置单元表格中选择具有特殊字符的数据,特别是Tab和NewLine。我已尝试

我已尝试like '%\n%'like '%\t%'like '%hex(9)%'等,但它们似乎不起作用。

还试图创建一个虚表来插入这样的数据,但也不起作用。请帮帮忙。

推荐答案

使用rlike '\t'表示制表符,rlike '\n'表示换行符(使用双反斜杠):

hive> select 'a	b' rlike '\t'; --tabs
OK
true
Time taken: 0.075 seconds, Fetched: 1 row(s)

和换行符:

hive>  select 'a
b' rlike '\n'; --newline
OK
true
Time taken: 0.454 seconds, Fetched: 1 row(s)

使用换行符和制表符插入值的示例:

 create table test_special_chars as  
        select 'a
b' as a union all select 'a	b';

新行很棘手。问题是,表格默认是文本文件,换行符通常被解释为换行,这就是为什么当被选中时,它会额外返回一行:

 select * from test_special_chars;
OK
a
b
a       b
实际上,插入 在文本文件中创建了额外的行。事情就是这样发生的。

但如果您创建ORC表:

create table test_special_chars stored as ORC as  select 'a
b' as a union all select 'a	b'; 

它工作得很好,因为ORC不是文本格式,可以存储换行符:

select count(*) from test_special_chars where a rlike '\n';

退货:

OK
1
Time taken: 40.564 seconds, Fetched: 1 row(s) 

当您select a from test_special_chars where a rlike '\n'时,它在屏幕上也会显示为两行,它在SELECT上解释,但ORC和文本文件的不同之处在于,在ORC中,换行符可以存储在值中,而不会在文件中创建额外的行。这就是为什么rlike '\n'在插入文本文件后使用ORC而不使用文本文件(不返回任何行)的原因 在文件中创建两个单独的行,但在ORC中不创建。

下面是用其他内容替换换行符的方法:

 select regexp_replace(a,'\n',' newline ') from test_special_chars where a rlike '\n';

结果:

OK
a newline b
Time taken: 1.502 seconds, Fetched: 1 row(s)

这篇关于插入带有特殊字符的配置单元表格内容-制表符和换行符的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆