2
하이브 테이블의 열 중 하나에 다음과 같은 문자열이 있습니다.HIVE의 문자열 변환
{ABC:"ABCVAL",XYZ:"XYZVAL"}
는 내가이 작업을 수행 할 수있는 방법
{"ABC":"ABCVAL","XYZ":"XYZVAL"}
HIVE
에로 변환 할 수 있습니다.하이브 테이블의 열 중 하나에 다음과 같은 문자열이 있습니다.HIVE의 문자열 변환
{ABC:"ABCVAL",XYZ:"XYZVAL"}
는 내가이 작업을 수행 할 수있는 방법
{"ABC":"ABCVAL","XYZ":"XYZVAL"}
HIVE
에로 변환 할 수 있습니다.간단한 버전
값을 가정하면 콜론 (:
) 기호가 포함되어 있지 않습니다. :
select regexp_replace('{ABC:"ABCVAL",XYZ:"XYZVAL"}','(?<key>[^{,:]+):','"${key}":');
{"ABC":"ABCVAL","XYZ":"XYZVAL"}
안전 버전 다음 {,:
(키) 이외의 문자 시퀀스
봐
일련의 문자 다음에 선택 {
(beforekey)을 찾아 (키) 바로 뒤에 :
(콜론) 다음에 "
, 문자 시퀀스 (값), 그리고 "
, 다시 ,
또는이 계속됩니다.(aftervalue)
select regexp_replace
(
'{ABC:"ABCVAL",XYZ:"XYZVAL"}'
,'(?<beforekey>\\{)?(?<key>.*?)(?<colon>:)(?<value>".*?")(?<aftervalue>[,}])'
,'${beforekey}"${key}"${colon}${value}${aftervalue}'
)
;
{"ABC":"ABCVAL","XYZ":"XYZVAL"}
수 있습니다 당신은 왜 이것이 작동하는지에 대해 약간의 설명을 추가 할 수 있습니까? –