HIVE中的字符串转换

时间:2017-03-15 10:02:27

标签: hive

我在hive表的其中一列中有一个字符串,如下所示。

{ABC:"ABCVAL",XYZ:"XYZVAL"}

我想将其转换为HIVE

{"ABC":"ABCVAL","XYZ":"XYZVAL"}

我该怎么做?

1 个答案:

答案 0 :(得分:2)

简易版

假设该值不包含冒号(:)符号。

查找除{,:(键)后跟:

以外的字符序列
select regexp_replace('{ABC:"ABCVAL",XYZ:"XYZVAL"}','(?<key>[^{,:]+):','"${key}":');

{"ABC":"ABCVAL","XYZ":"XYZVAL"}

安全版

查找可选的{(beforekey),然后是一系列字符(键),紧接着是:(冒号),后跟",字符序列(值)然后再次",然后是,](后值)

select  regexp_replace
        (
            '{ABC:"ABCVAL",XYZ:"XYZVAL"}'
           ,'(?<beforekey>\\{)?(?<key>.*?)(?<colon>:)(?<value>".*?")(?<aftervalue>[,}])'
           ,'${beforekey}"${key}"${colon}${value}${aftervalue}'
        )
;

{"ABC":"ABCVAL","XYZ":"XYZVAL"}