У меня есть много json-массивов, хранящихся в таблице (jt), которая выглядит так:
[{"ts":1403781896,"id":14,"log":"show"},{"ts":1403781896,"id":14,"log":"start"}]
[{"ts":1403781911,"id":14,"log":"press"},{"ts":1403781911,"id":14,"log":"press"}]
Каждый массив является записью.
Я хотел бы проанализировать эту таблицу, чтобы получить новую таблицу (журналы) с тремя полями: ts, id, log. Я попытался использовать метод get_json_object, но кажется, что этот метод несовместим с массивами json, потому что я получаю только нулевые значения.
Это код, который я тестировал:
CREATE TABLE logs AS
SELECT get_json_object(jt.value, '$.ts') AS ts,
get_json_object(jt.value, '$.id') AS id,
get_json_object(jt.value, '$.log') AS log
FROM jt;
Я пытался использовать другие функции, но они кажутся очень сложными. Спасибо!:)
Update! Я решил проблему, выполнив регулярное выражение:
CREATE TABLE jt_reg AS
select regexp_replace(regexp_replace(value,'\\}\\,\\{','\\}\\\n\\{'),'\\[|\\]','') as valuereg from jt;
CREATE TABLE logs AS
SELECT get_json_object(jt_reg.valuereg, '$.ts') AS ts,
get_json_object(jt_reg.valuereg, '$.id') AS id,
get_json_object(jt_reg.valuereg, '$.log') AS log
FROM ams_json_reg;