create table test_special_chars stored as ORC as select 'a\nb' as a union all select 'a\tb';
它工作正常,因为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' ,在屏幕上它也将显示为两行,在选择时解释,但orc和文本文件之间的区别是,在orc中,换行符可以存储在值中,而不在文件中创建额外的行。这就是为什么 rlike '\\n' 与orc一起使用,不与textfile一起使用(不返回任何行),在textfile中插入后\n在文件中创建两个单独的行,但在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)
1条答案
按热度按时间r3i60tvu1#
使用
rlike '\\t'
用于制表符和rlike '\\n'
对于换行符(使用双反斜杠):对于新词:
使用换行符和制表符插入值的示例:
换行是很棘手的。问题是,默认情况下,表是文本文件,换行符通常被解释为新行,这就是为什么选中时,它会返回一个额外的行:
实际上,insert of在文本文件中创建了额外的行。事情就是这样。
但如果创建orc表:
它工作正常,因为orc不是文本格式,可以存储换行:
退货:
当你
select a from test_special_chars where a rlike '\\n'
,在屏幕上它也将显示为两行,在选择时解释,但orc和文本文件之间的区别是,在orc中,换行符可以存储在值中,而不在文件中创建额外的行。这就是为什么rlike '\\n'
与orc一起使用,不与textfile一起使用(不返回任何行),在textfile中插入后\n在文件中创建两个单独的行,但在orc中它不会。这就是如何用其他东西替换换行符:
结果: