1.場(chǎng)景分析
數(shù)據(jù)處理常用hive -e的方式,通過(guò)腳本操作數(shù)倉(cāng),過(guò)程中常常遇到特殊字符的處理,如單雙引號(hào)、反斜杠、換行符等,現(xiàn)將特殊字符用法總結(jié)使用如下,可直接引用,避免自行測(cè)試的繁瑣。
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="
#設(shè)置不打印表頭
set hive.cli.print.header=false;
select
\`timestamp\`,
#雙引號(hào)中嵌套雙引號(hào),需要加反斜杠
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
輸出內(nèi)容為:
1702006716111,[1,"-------------------id=123212-------------------\n學(xué)生: 老師你好。\n老師: 你說(shuō)。\n學(xué)生: 我自己的人生是一塌糊涂。\n老師: 說(shuō)說(shuō)看,為什么一塌糊涂?\n<NE><NE><NE>\n"]
假如直接寫(xiě)\n,則文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-799435.html
#!/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
輸出內(nèi)容為:文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-799435.html
1702006716111,[1,"-------------------id=123212-------------------
學(xué)生: 老師你好。
老師: 你說(shuō)。
學(xué)生: 我自己的人生是一塌糊涂。
老師: 說(shuō)說(shuō)看,為什么一塌糊涂?
<NE><NE><NE>
"]
3.總結(jié)
- (`)撇號(hào)在shell中使用需要用反斜杠轉(zhuǎn)義
- (")雙引號(hào)中嵌套雙引號(hào)需要用反斜杠轉(zhuǎn)義
- (')單引號(hào)中嵌套雙引號(hào)需要用反斜杠轉(zhuǎn)義
- (/)反斜杠作為字符使用中使用需要兩個(gè)反斜杠轉(zhuǎn)義
- 預(yù)留關(guān)鍵字使用兩側(cè)需要使用(`)撇號(hào)
到了這里,關(guān)于Hive使用shell調(diào)用命令行特殊字符處理的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!