Переменные Beeline / Hive2, переданные из скрипта, усекаются - PullRequest
0 голосов
/ 13 июня 2019

У меня есть скрипт, из которого я передаю параметры в переменную улья.Весь поток такой, как показано ниже. Одна из переменных улья усекается.

cat << script.sh </h1> beeline -u "$HIVESERVER" \ -f $path_to.hql \ --hivevar TRGT_DB=$HIVE_TRGT_DB \ --hivevar SRC_CLMN=$SOURCE_CLMNS \ --hivevar INBND_DB=$HIVE_SRC_DB \ --hivevar SRC_TBL=$SOURCE_TABLE \ --hivevar TRGT_TBL=$TRGT_TABLE \ Все переменные передаются правильно, кроме переменной столбца (SRC_CLMN), которая усекается

SRC_CLMN извлекается из файлакак показано ниже.

SRC_CLMN=`cat source_column.tbl | grep table | (some sed functions)`

Вывод переменной SRC_CLMN:

trim (regexp_replace (col1, '[^ a-zA-Z]', '')) как col1, trim (col2) как col2, обрезать (regexp_extract (col1, "\ (([^)] +) \)", 1)) как col3, обрезать (col4) как col4, обрезать (col5) как col5, обрезать (col6) как col6, '' как col7, обрезать (col8) как col8, обрезать (col9) как col9, обрезать (col10) как col10, обрезать (col11) как col11, обрезать (col12) как col12, обрезать (col13) как col13

Когда я печатаю переменную, она печатает всю строку.

Но когда я печатаю переменную улья, используя SET SRC_CLMN;я вижу только до "trim (regexp_replace (col1,"

Так что это выдает ошибку в запросе улья.

1 Ответ

0 голосов
/ 13 июня 2019

Вывод переменной SRC_CLMN:

trim (regexp_replace (col1, '[^ a-zA-Z]', '')) как col1, trim (col2) как col2Обрезать (regexp_extract (col1, "(([^)] +))", 1)) как col3, обрезать (col4) как col4, обрезать (col5) как col5, обрезать (col6) как col6, '' как col7обрезать (col8) как col8, обрезать (col9) как col9, обрезать (col10) как col10, обрезать (col11) как col11, обрезать (col12) как col12, обрезать (col13) как col13

как выв выводе можно увидеть одинарные кавычки '[^ a-zA-Z]', '')) вы должны использовать символ пропуска, чтобы сделать их доступными в вашей строке

, просто так переменная сохраняет ееSRC_CLMN = 'trim (regexp_replace (col1,' [^ a-zA-Z] ',' ')) как col1, trim (col2) как col2, trim (regexp_extract (col1, "(([^)] +))", 1)) как col3, обрезать (col4) как col4, обрезать (col5) как col5, обрезать (col6) как col6, '' как col7, обрезать (col8)как col8, обрезать (col9) как col9, обрезать (col10) как col10, обрезать (col11) как col11, обрезать (col12) как col12, обрезать (col13) как col13

, если вы отметите полужирный курсивя отметил, вы увидите, что этоrts с кавычками и заканчивается одним, поэтому для переменной, содержащей строку

, вам нужно обрабатывать все цитаты пропущенными символами, вы можете использовать sed , чтобы заменить все 'и добавьте пропущенный символ \ '

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