Hive使用shell调用命令行特殊字符处理

这篇具有很好参考价值的文章主要介绍了Hive使用shell调用命令行特殊字符处理。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

Hive使用shell调用命令行特殊字符处理,Hive相关,hive,hadoop,数据仓库

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

输出内容为:文章来源地址https://www.toymoban.com/news/detail-799435.html

1702006716111,[1,"-------------------id=123212-------------------
学生: 老师你好。
老师: 你说。
学生: 我自己的人生是一塌糊涂。
老师: 说说看,为什么一塌糊涂?
<NE><NE><NE>
"]

3.总结

  • (`)撇号在shell中使用需要用反斜杠转义
  • (")双引号中嵌套双引号需要用反斜杠转义
  • (')单引号中嵌套双引号需要用反斜杠转义
  • (/)反斜杠作为字符使用中使用需要两个反斜杠转义
  • 预留关键字使用两侧需要使用(`)撇号

到了这里,关于Hive使用shell调用命令行特殊字符处理的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Java进程ProcessBuilder类的介绍及使用,ProcessBuilder调用外部程序执行shell命令Linux命令

    目录 ProcessBuilder类的介绍及使用 【前言】 【正文】 --构造方法-- --常用方法-- --使用技巧-- --调用本地Shell命令,实例-- 【总结】 【注意】         在做一个项目的时候需要用到运行时动态执行JAVA命令,一开始的思路是运行时生成bat脚本,然后通过Runtime类的exec方法之行

    2024年02月09日
    浏览(41)
  • Mybatis映射文件 — 常用标签及特殊字符的处理

    目录 一、Mybatis映射文件 — resultMap标签 (1)新建一个Teacher类,如下 (2)新建一个TeacherMapper持久层接口 (3)新增TeacherMapper.xml  Mybatis映射文件 (4)新增testTeacherMapper测试类 (5)运行结果 二、Mybatis映射文件 — sql和include标签 (1)持久层新增根据Id查询方法 (2)映射文

    2024年02月01日
    浏览(44)
  • URL传参时,参数包含有特殊字符(%、#、&)的处理方法

    uniapp项目中页面跳转时,通过url传参,参数为一个包含特殊的字符的对象并内容比较多,导致不能正常传参 1、有些符号在URL中是不能直接传递的,如果要在URL中传递这些特殊符号,那么就要使用他们的编码了。编码的格式为:%+字符的ASCII码,即一个百分号%,后面跟对应字符

    2024年02月11日
    浏览(34)
  • Node.js中处理特殊字符的文件名,安全稳妥的方案

    在Node.js中,通过 path 模块提供的 basename 方法,我们可以轻松地从文件路径中提取文件名。然而,这个方法在处理特殊字符时存在一些问题,因为它会对这些字符进行转义,导致在不同操作系统上的兼容性问题。在这篇文章中,我们将介绍一种安全稳妥的方法,结合使用 dir

    2024年02月04日
    浏览(39)
  • Python调用Shell命令 (python,shell 混合编程)

    Python经常被称作“胶水语言”,因为它能够轻易地操作其他程序,轻易地包装使用其他语言编写的库,也当然可以用Python调用Shell命令。 用Python调用Shell命令有如下几种方式: os .system( \\\"The command you want\\\" ). os .system( \\\"lscpu\\\" ). os .system( \\\"ls -al\\\" ). 这个调用相当直接,且是同步进行的

    2024年02月16日
    浏览(44)
  • 【SQL相关】Hive行列字符串的合并与拆分

    目录 一、行方向 1. 行方向的合并 1.1 concat 函数 1.2 concat_ws 函数 2. 行方向的拆分 二、列方向 1. 列方向的合并 1.1 group_concat 函数 1.2 collect_list 函数 1.3 collect_set 函数 2. 列方向的拆分 2.1 explode 函数 2.2 lateral view 1. 行方向的合并 将同一行某几列的数据以分隔符分隔,合并到同一列

    2024年04月14日
    浏览(47)
  • 使用hive查看orc文件 orcfiledump命令详解 异常处理(Failed to read ORC file)

    列式存储以orc和parquet文件居多,现阶段hive数据存储的主流格式是orc,然后结合presto(目前对orc的支持好于parquet)做一些即席查询。hive数据文件是直接存储在hdfs上,但是hadoop貌似没有提供直接查看文本的命令,好在hive提供了支持。 1. 命令帮助: hive --service orcfiledump --help 2. 数

    2024年02月16日
    浏览(39)
  • Hive字符串函数-空格处理

    平常我们在数据开发的过程中,字符串函数里面包含空格会导致数据的一致性被破坏,造成我们的开发脚本出错,所以我们在数据预处理的时候,有两种情况需要考虑,一种是字符串里面空格的内容是否需要清洗,另一种字符串长度缺少是否需要用空格填充。 语法:trim(str

    2023年04月08日
    浏览(40)
  • SHELL 基础 显示字符颜色, 修改历史命令,Linux里的命令 执行顺序

    目录 echo 打印命令  :        显示字符串  :  显示转义字符 :   显示颜色  :   显示命令执行结果  :  history 历史命令 :  修改默认记录历史命令条数 :             历史命令的调用  :  命令别名    查看命令别名  :  命令的执行顺序  :   选项   :   

    2024年02月12日
    浏览(43)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包