Hive使用shell调用命令行特殊字符处理
•
大数据

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)),'\\\n\"]') content
from temp_table;
"
echo $qingsu_data
hive -S -e "$sql" > /data/$date2.jsonl
输出内容为:
1702006716111,[1,"-------------------id=123212-------------------\n学生: 老师你好。\n老师: 你说。\n学生: 我自己的人生是一塌糊涂。\n老师: 说说看,为什么一塌糊涂?\n\n"]
假如直接写\n,则
#!/bin/bash
sql="
select
\`timestamp\`,
concat('[1,\"------------------id=123212-------------------\n' ,concat_ws('\n',collect_list(content)),'\n\"]') content
from temp_table;
"
echo $qingsu_data
hive -S -e "$sql" > /data/$date2.jsonl
输出内容为:
1702006716111,[1,"-------------------id=123212------------------- 学生: 老师你好。 老师: 你说。 学生: 我自己的人生是一塌糊涂。 老师: 说说看,为什么一塌糊涂? "]
3.总结
- (`)撇号在shell中使用需要用反斜杠转义
- (“)双引号中嵌套双引号需要用反斜杠转义
- (‘)单引号中嵌套双引号需要用反斜杠转义
- (/)反斜杠作为字符使用中使用需要两个反斜杠转义
- 预留关键字使用两侧需要使用(`)撇号
本文来自网络,不代表协通编程立场,如若转载,请注明出处:https://www.net2asp.com/449b43cc4f.html
