Как получить Escape char '\\\\' на выходе - PullRequest
1 голос
/ 14 июля 2020

Может ли кто-нибудь помочь получить '\ \ \ \' (Четыре backsha sh) в моем выводе запроса для перезаписи вставки улья.

Я пробовал:

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"

Ответы [ 2 ]

2 голосов
/ 14 июля 2020

Вы можете определить необработанную строку следующим образом:

slash_str = r"your_string_with_slashes"

Подробнее о необработанных строках здесь: Link

2 голосов
/ 14 июля 2020

Чтобы избежать одиночного \, вам нужно использовать дополнительный \ как escape-символ. Таким образом, чтобы получить ожидаемый результат, вам понадобится 8 \ - тогда каждая пара escape-символа плюс символ, который нужно экранировать, будут отображать один \.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...