【问题标题】:How to get Escape char '\\\\' in output如何在输出中获取 Escape char '\\\\'
【发布时间】:2020-07-14 17:53:25
【问题描述】:

有人可以帮助在我的配置单元插入覆盖查询输出中获取'\ \ \ \'(四个反斜杠)。

我试过了:

beeline = "beeline -u 'jdbc:hive2:blahblah'"
exportDir = " /dev/targetdir "
presql =  ' INSERT OVERWRITE DIRECTORY \'' + exportDir + '\' ROW FORMAT DELIMITED FIELDS TERMINATED BY \',\' ' + 'ESCAPED BY \'\\\\\' NULL DEFINED AS \'\' '
sql = " select abc from xyz limit 10 "

>>> print(beeline + " -e " + '\"'+ presql + sql+'\"')

beeline -u 'jdbc:hive2blahblah' -e "INSERT OVERWRITE DIRECTORY '/dev/targetDir/' ROW FORMAT DELIMITED FIELDS TERMINATED BY ',' ESCAPED BY '\\' NULL DEFINED AS '' select abc from xyz limit 10"


#Expected O/p:

beeline -u 'jdbc:hive2blahblah' -e "INSERT OVERWRITE DIRECTORY '/dev/targetDir/' ROW FORMAT DELIMITED FIELDS TERMINATED BY ',' ESCAPED BY '\\\\' NULL DEFINED AS '' select abc from xyz limit 10"

【问题讨论】:

    标签: python python-3.x hive


    【解决方案1】:

    你可以像这样定义一个原始字符串:

    slash_str = r"your_string_with_slashes"
    

    在此处阅读有关原始字符串的更多信息:Link

    【讨论】:

      【解决方案2】:

      为了转义单个 \,您需要使用额外的 \ 作为转义字符。因此,要获得预期的输出,您需要有 8 个 \ - 然后每对转义字符加上要转义的字符将显示一个 \。

      【讨论】:

      • 像这样:a = " ESCAPED BY '\\\\\\\\'' " print(a) ESCAPED BY '\\\\''
      • 成功了。然而,原始字符串也有助于在同一字符串中删除其他转义字符。谢谢
      猜你喜欢
      • 1970-01-01
      • 2011-05-09
      • 2020-07-20
      • 1970-01-01
      • 2018-09-12
      • 2020-04-24
      • 1970-01-01
      • 1970-01-01
      • 2018-06-02
      相关资源
      最近更新 更多