本文介绍: 数据处理常用hive -e的方式,通过脚本操作数仓,过程中常常遇到特殊字符的处理,如单双引号、反斜杠、换行符等处理
1.场景分析
数据处理常用hive -e的方式,通过脚本操作数仓,过程中常常遇到特殊字符的处理,如单双引号、反斜杠、换行符等,现将特殊字符用法总结使用如下,可直接引用,避免自行测试的繁琐。
2.特殊字符处理
#!/bin/bash
if [ -n "$1" ] ;then
do_date=$1
date1=${do_date: 0: 8}
date2=`date -d "+1 day $date1" +%Y%m%d
else
date1=`date -d "-1 day" +%Y%m%d`
date2=`date +%Y%m%d`
fi
sql="
#设置不打印表头
set hive.cli.print.header=false;
select
`timestamp`,
#双引号中嵌套双引号,需要加反斜杠
concat('[1,"------------------id=123212-------------------\n' ,concat_ws('\n',collect_list(content)),'<NE><NE><NE>\n"]') content
from temp_table;
"
echo $qingsu_data
hive -S -e "$sql" > /data/$date2.jsonl
输出内容为:
1702006716111,[1,"-------------------id=123212-------------------n学生: 老师你好。n老师: 你说。n学生: 我自己的人生是一塌糊涂。n老师: 说说看,为什么一塌糊涂?n<NE><NE><NE>n"]
假如直接写n,则
#!/bin/bash
sql="
select
`timestamp`,
concat('[1,"------------------id=123212-------------------n' ,concat_ws('n',collect_list(content)),'<NE><NE><NE>n"]') content
from temp_table;
"
echo $qingsu_data
hive -S -e "$sql" > /data/$date2.jsonl
输出内容为:
1702006716111,[1,"-------------------id=123212-------------------
学生: 老师你好。
老师: 你说。
学生: 我自己的人生是一塌糊涂。
老师: 说说看,为什么一塌糊涂?
<NE><NE><NE>
"]
3.总结
- (`)撇号在shell中使用需要用反斜杠转义
- (“)双引号中嵌套双引号需要用反斜杠转义
- (‘)单引号中嵌套双引号需要用反斜杠转义
- (/)反斜杠作为字符使用中使用需要两个反斜杠转义
- 预留关键字使用两侧需要使用(`)撇号
原文地址:https://blog.csdn.net/Brother_ning/article/details/135610293
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.7code.cn/show_56732.html
如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱:suwngjj01@126.com进行投诉反馈,一经查实,立即删除!
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。