插入带有特殊字符的配置单元表格内容-制表符和换行符 [英] Inserting Hive table content with special characters -Tab space and New Line
本文介绍了插入带有特殊字符的配置单元表格内容-制表符和换行符的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我正在尝试从根据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屋!
查看全文