Ich habe eine Zeichenfolge wie unten in einer der Spalten in der Hive-Tabelle angegeben.String Umwandlung in HIVE
{ABC:"ABCVAL",XYZ:"XYZVAL"}
ich möchte es konvertieren in HIVE
{"ABC":"ABCVAL","XYZ":"XYZVAL"}
Wie kann ich dies tun.
Ich habe eine Zeichenfolge wie unten in einer der Spalten in der Hive-Tabelle angegeben.String Umwandlung in HIVE
{ABC:"ABCVAL",XYZ:"XYZVAL"}
ich möchte es konvertieren in HIVE
{"ABC":"ABCVAL","XYZ":"XYZVAL"}
Wie kann ich dies tun.
Einfache Version
den Wert Unter der Annahme, nicht Doppelpunkt (:
) Symbol enthält.
Geben Sie für Folge von Zeichen anders als {,:
(Schlüssel), gefolgt von :
select regexp_replace('{ABC:"ABCVAL",XYZ:"XYZVAL"}','(?<key>[^{,:]+):','"${key}":');
{"ABC":"ABCVAL","XYZ":"XYZVAL"}
Sichere Version
Geben Sie für optionale {
(beforekey), durch eine Folge von Zeichen folgen (key) direkt gefolgt von :
(Doppelpunkt), gefolgt von "
, Folge von Zeichen (Wert) und dann wieder "
, gefolgt von ,
oder ]
(aftervalue)
select regexp_replace
(
'{ABC:"ABCVAL",XYZ:"XYZVAL"}'
,'(?<beforekey>\\{)?(?<key>.*?)(?<colon>:)(?<value>".*?")(?<aftervalue>[,}])'
,'${beforekey}"${key}"${colon}${value}${aftervalue}'
)
;
{"ABC":"ABCVAL","XYZ":"XYZVAL"}
Können Sie eine kleine Erklärung hinzufügen, warum das funktioniert? –